在范围错误中无法访问MainActivity类型的封闭实例 [英] No enclosing instance of the type MainActivity is accessible in scope error
问题描述
当我在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 themakeText
call should be anActivity
instance, in your case it looks like you've copied a click-handler that was previously an anonymous type insideMainActivity
. But sinceToaster
is not part ofMainActivity
you could try passing theActivity
in to theToaster
.
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屋!