我想在静态类中显示Toast消息,但这是Toast消息参数传递应用程序上下文的问题。请帮助我,如何在静态类中显示toast消息。请向我推荐我需要做的改变,我将非常感谢你。这是我的一部分代码。
public class MainActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.training_four_position);
mEndlessRunnable = (Runnable) new UpdateRunnable();
mEndlessRunnable.run();
}
private static class UpdateRunnable implements Runnable {
private int mState;
public UpdateRunnable(Handler handler, Button[] buttons) {
mHandler = handler;
mButtons = buttons;
}
public void run() {
switch (mState) {
case 0:
mState = 1;
break;
case 1:
mState = 0;
// Here is the issue in my toast message
Toast.makeText(CONTEXT, "Toast message.",Toast.LENGTH_LONG).show();
break;
}
mHandler.postDelayed(this,1000));
}// End of run()
}//End of class UpdateRunnable
} //End of MainActivity
答案 0 :(得分:1)
您可以将Activity的Context传递给构造函数中的UpdateRunnable类,然后在run()函数中使用它。
但是,如果您从内部类显示Toast,那么该内部类可能根本不应该是静态类。您可以删除static关键字,然后在run()中使用Activity的getContext()。
为什么你希望你的内部类是静态的?
答案 1 :(得分:1)
你可以尝试为你的吐司制作一个单独的方法
public void showToast(String message){
Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
}//end showToast
然后在你的内部类中调用它。
答案 2 :(得分:0)
嗯,其中一种方法是在你的活动中使用静态变量。
public static Context myContext;
然后在onCreate中更新它..
onCreate()
{
myContext = getApplicationContext();
}
其他方法是在类的构造函数中传递上下文...
答案 3 :(得分:0)
我想getParent()或getApplicationContext()应该将参数传递给类并拥有一个本地上下文对象。让我知道它是否失败