在范围错误中无法访问MainActivity类型的封闭实例 [英] No enclosing instance of the type MainActivity is accessible in scope error

查看:321
本文介绍了在范围错误中无法访问MainActivity类型的封闭实例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我在Toast中插入MainActivity作为参数时出现此错误。这是代码



公共类Toaster实现OnClickListener {



@Override

public void onClick(查看clickedButton){



String greetingText =Hello from Android!;



Toast tempMessage = Toast.makeText(MainActivity.this,greetingText,Toast.LENGTH_SHORT);

tempMessage.show();

}



}



可能是什么问题?...我是Android开发的初学者

I got this error when i inserted MainActivity as a Parameter in Toast. This is the code

public class Toaster implements OnClickListener {

@Override
public void onClick(View clickedButton) {

String greetingText = "Hello from Android!";

Toast tempMessage = Toast.makeText(MainActivity.this , greetingText, Toast.LENGTH_SHORT);
tempMessage.show();
}

}

What could be the problem?...i am a beginner in Android development

推荐答案

makeText 调用的第一个参数应该是 Activity 实例,在你的如果您复制了以前在 MainActivity 中的匿名类型的点击处理程序。但由于 Toaster 不属于 MainActivity ,您可以尝试传递活动进入烤面包机



将代码更改为;

The first parameter to the makeText call should be an Activity instance, in your case it looks like you've copied a click-handler that was previously an anonymous type inside MainActivity. But since Toaster is not part of MainActivity you could try passing the Activity in to the Toaster.

Change your code to;
public class Toaster implements OnClickListener {

  private final MainActivity mainActivity;

  public Toaster(final MainActivity mainActivity) {
    this.mainActivity = mainActivity;
  }
 
  @Override
  public void onClick(View clickedButton) {  
    final String greetingText = "Hello from Android!";
    final Toast tempMessage = Toast.makeText(mainActivity, greetingText, Toast.LENGTH_SHORT);
    tempMessage.show();
  }
}



并确保将 MainActivity 的实例传递给 Toaster 在调用它的构造函数时。



希望这会有所帮助,

Fredrik


and make sure to pass the instance of MainActivity to Toaster when calling it's constructor.

Hope this helps,
Fredrik


试试吧,

Well try this out,
public class Toaster implements OnClickListener {

    Context ctx = this; 
    
    @Override
    public void onClick(View clickedButton) 
    {
        String greetingText = "Hello from Android!";
        Toast.makeText(cyx , greetingText, Toast.LENGTH_SHORT).show();
    }
 
}



-KR


-KR


你可以在里面创建Toaster类MainActivity。

You can create the Toaster class inside the MainActivity.
public class MainActivity extends Activity {
	
	public class Toaster implements OnClickListener {

		@Override
		public void onClick(View clickedButton) {

			String greetingText = "Hello from Android!";

			Toast tempMessage = Toast.makeText(MainActivity.this, greetingText,
					Toast.LENGTH_SHORT);
			tempMessage.show();
		}

	}
}


这篇关于在范围错误中无法访问MainActivity类型的封闭实例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆