显示两个不同的Toast

display two different 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();

很遗憾,只出现了第二个吐司。不知道是我用错了toast还是用错了线程!

谢谢

您不能只停止 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);

您可以使用 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); 

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

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

     } 
}, 8000); 

我简单说一下

@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 线程,使用 @IntelliJ Amiya 所说的处理程序。

修改你的代码:

@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);
}