且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

在范围错误中无法访问MainActivity类型的封闭实例

更新时间:2022-06-10 05:45:32

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();
		}

	}
}