0

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

4 回答 4

1

您可以将 Activity 的 Context 传递给构造函数中的 UpdateRunnable 类,然后在 run() 函数中使用它。

但是,如果您从内部类显示 Toast,那么该内部类可能根本不应该是静态类。您可以删除 static 关键字,然后在 run() 中使用 Activity 的 getContext() 。

为什么你想要你的内部类是静态的?

于 2012-10-24T12:41:52.133 回答
1

你可以尝试为你的吐司制作一个单独的方法

public void showToast(String message){

    Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();

}//end showToast

然后在你的内部类中调用它。

于 2012-10-24T12:50:32.720 回答
0

好吧,其中一种方法是在您的活动中使用静态变量。

公共静态上下文 myContext;

然后在 onCreate.. 中更新它

onCreate()
{
    myContext = getApplicationContext();
}

另一种方法是在类的构造函数中传递上下文......

于 2012-10-24T12:43:38.573 回答
0

我猜 getParent() 或 getApplicationContext() 应该完成工作,将参数传递给类并拥有一个本地上下文对象。如果失败,请告诉我

于 2012-10-24T12:55:24.093 回答