当需要显示另一个Toast时如何进行Toast超时?

时间:2015-06-02 16:19:31

标签: android toast android-toast

我有2个按钮,他们的onClick连接到这些方法,代码类似于:

    /** Called when the user clicks button2 */
    public void button1Start(View view) {
        // Display a toast at bottom of screen
        Toast.makeText(getApplicationContext(), "Toast1", Toast.LENGTH_SHORT).show();
    }

/** Called when the user clicks button2 */
    public void button2Start(View view) {
        // Display different toast at bottom of screen
        Toast.makeText(getApplicationContext(), "Toast2", Toast.LENGTH_SHORT).show();
    }

现在,正如预期的那样,当我点击这些按钮时,在前一次超时之后,一次一个地出现在屏幕底部。

我需要的是这种行为:当我点击button2时," Toast2"视图应立即替换" Toast1"无论Toast1"的持续时间如何。有没有办法实现这个目标?我可以制作" toast1"超时或者可能使toast1视图不可见?

3 个答案:

答案 0 :(得分:2)

只需使用相同的Toast对象即可显示文字。

也许您应该在整个应用程序中创建一个单例,但最简单的方法是:

private Toast mToast;

private void showMessage(String message) {
    if (mToast == null) {
        mToast = Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT);
    } else {
        mToast.setText(message);
    }
    mToast.show();
}

无需取消。如果有的话,会立即替换上一个文本。

答案 1 :(得分:0)

你不能让吐司看不见,但你可以延迟它(但我认为这不是一个好习惯)

final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
  @Override
  public void run() {
   Toast.makeText(getApplicationContext(), "Toast2", Toast.LENGTH_SHORT).show();
  }
}, 100);

答案 2 :(得分:0)

  

如果需要显示另一个Toast,如何进行Toast超时?

不,这不可能!。

您是否尝试使用cancel()方法?

Toast mytoast;
mytoast = Toast.makeText(getApplicationContext(), "Hi Ho Jorgesys! ", Toast.LENGTH_LONG);
mytoast.show();
....
....
....
if(CancelToast){
  mytoast.cancel();
}