Android中的Toast消息参数问题

时间:2012-10-24 12:35:22

标签: android

我想在静态类中显示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

4 个答案:

答案 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()应该将参数传递给类并拥有一个本地上下文对象。让我知道它是否失败