显示两个不同的Toast

时间:2015-08-21 09:56:22

标签: android multithreading toast

我想要显示两个不同的Toast。第二个应出现在第二个之后8秒。

我试图对此进行编码:

@Override
public void onReceive(Context context, Intent intent) {
    Toast toast1 = new Toast(context);
    Toast toast2 = new Toast(context);

    //toast1
    toast1.makeText(context, "First toast ", Toast.LENGTH_SHORT).show();

    //wait for 8 seconds
        try {
            Thread.sleep(8000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

    //toast2
    toast2.makeText(context, "Toast2 ", Toast.LENGTH_SHORT).show();

不幸的是,只有第二个吐司出现了。我不知道错误是由于我错误地使用吐司还是错误使用了线程!

谢谢

5 个答案:

答案 0 :(得分:3)

您无法停止UI线程。 为此,请使用Handler(Android方式)或TimerTask(Java方式)。

 Handler h = new Handler();
    h.postDelayed(new Runnable() {
        @Override
        public void run() {
            Toast.makeText(someContext, "someText", Toast.LENGTH_SHORT).show();
        }
    }, 8000);

答案 1 :(得分:1)

您可以使用Handler

与线程的MessageQueue关联的Handler allows you to send and process Message and Runnable objects。每个Handler实例都与一个线程和该线程的消息队列相关联。

    @Override
    public void onReceive(Context context, Intent intent) {
        Toast toast1 = new Toast(context);
        Toast toast2 = new Toast(context);

      toast1.makeText(context, "First toast ", Toast.LENGTH_SHORT).show();   

      Handler handler = new Handler(); 
                handler.postDelayed(new Runnable() { 
                     public void run() { 

                  toast2.makeText(context, "Toast2 ", Toast.LENGTH_SHORT).show();     

                     } 
                }, 8000); 

答案 2 :(得分:0)

无法停止UI线程。你必须使用一些处理程序。

Handler handler = new Handler(); 
handler.postDelayed(new Runnable() { 
     public void run() { 
           toast1.makeText(context, "First toast ", Toast.LENGTH_SHORT).show();

     } 
}, 8000); 

答案 3 :(得分:0)

我简单地说

@Override
public void onReceive(Context context, Intent intent) {
        Toast.makeText(context,"First",Toast.LENGTH_LONG).show();
        try{
            Thread.sleep(2000);
        }catch(Exception e){

        }
        Toast.makeText(context,"Second",Toast.LENGTH_LONG).show();
}

它工作了...... 但我的建议是你不应该停止UI线程,使用Handler作为@IntelliJ Amiya说。

答案 4 :(得分:0)

使用以下代码修改代码:

@Override
public void onReceive(Context context, Intent intent) {
    Toast toast1 = new Toast(context);
    Toast toast2 = new Toast(context);

    //toast1
    toast1.makeText(context, "First toast", Toast.LENGTH_SHORT).show();

    //toast2
    Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() { 
        public void run() { 
            toast2.makeText(context, "Second toast", Toast.LENGTH_SHORT).show();
        } 
    }, 8000);
}