从uiThread Runnable中显示Toast消息?

时间:2013-12-18 16:28:03

标签: java android multithreading toast

我想在UiThread上运行的线程中显示Toast消息,但是在我的调用中看起来没有正确引用Runnable。请参阅下面我的基本实现:

this.runOnUiThread(new Runnable() {
     public void run() {
                Toast.makeText(this, "Authenticated.", Toast.LENGTH_SHORT).show();
            }
        }
);

我认为这个不是 makeText 功能所需的实际可运行性。在这种情况下,你如何获得实际的Runnable?

2 个答案:

答案 0 :(得分:3)

不要使用this关键字,最佳做法是创建Context变量并在onCreate方法中初始化它,并使用活动中的每个位置。

Context context;

@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layoutname);
    context=this;
}   

现在像这样使用它:

this.runOnUiThread(new Runnable() {
     public void run() {
                Toast.makeText(context, "Authenticated.", Toast.LENGTH_SHORT).show();
            }
        }
);

在您的情况下,这是指 runnable 类而不是Context。因此,您可以context使用toast

答案 1 :(得分:2)

使用此

this.runOnUiThread(new Runnable() {
     public void run() {
                Toast.makeText(youractivityname.this, "Authenticated.", Toast.LENGTH_SHORT).show();
            }
        }
);

this指的是runnable类而不是context。所以你可以使用activityname.this