一个接一个地显示多个 Toast 的问题

dan*_*dim 7 android toast

对不起,我的英语不好。
我想按顺序显示两个吐司,换句话说,当第一个吐司持续时间结束时,第二个吐司出现。
这是我的代码:

Toast.makeText(this, "Toast1", Toast.LENGTH_SHORT).show();
Toast.makeText(this, "Toast2", Toast.LENGTH_SHORT).show();
Run Code Online (Sandbox Code Playgroud)

但只会出现第二个 toast 消息。我认为当第二个 toast 的 show 方法将执行时,它将取消前一个 toast(第一个 toast)

我用这段代码解决了我的问题:

Toast.makeText(this, "Toast1", Toast.LENGTH_SHORT).show();
    Handler handler =new Handler();
    handler.postDelayed(new Runnable()
    {
        @Override
        public void run()
        {
            Toast.makeText(MainActivity.this, "Toast2", Toast.LENGTH_SHORT).show();
        }
    },1000);
Run Code Online (Sandbox Code Playgroud)

但有没有更简单的解决方案?

Nhấ*_*ang 4

但只会出现第二条 toast 消息。我认为当第二个吐司的显示方法执行时它将取消之前的吐司(第一个吐司)

当你调用show方法时,它会放入UI线程的消息队列中,并且Toast将按顺序显示。但是你同时放两个Toast,后者会和前者重叠。

我想按顺序显示两个吐司,换句话说,当第一个吐司持续时间超过第二个吐司时出现。

来自Toast 的持续时间

private static final int LONG_DELAY = 3500; // 3.5 seconds 
private static final int SHORT_DELAY = 2000; // 2 seconds
Run Code Online (Sandbox Code Playgroud)

要使第二个 Toast 在第一个 Toast 持续时间结束后显示,请将代码更改为

Toast.makeText(this, "Toast1", Toast.LENGTH_SHORT).show();
Handler handler = new Handler();
handler.postDelayed(new Runnable()
{
    @Override
    public void run()
    {
        Toast.makeText(MainActivity.this, "Toast2", Toast.LENGTH_SHORT).show();
    }
}, 2000);
Run Code Online (Sandbox Code Playgroud)

但有没有更简单的解决方案呢?

使用 Handler 是完成您的任务的简单解决方案。