如何停止显示在android中排队的Toast消息

时间:2013-01-15 04:50:28

标签: android toast

下面的代码显示了我目前的实现,这里创建一个toast对象并关闭onPause()。这个工作正常,直到没有祝酒队列。

public static long **savedTimeStamp=0**;
    Toast showToastMessage;

if(System.currentTimeMillis()/1000 - savedTimeStamp >= 60 || savedTimeStamp==0){
    showToastMessage=Toast.makeText(this.this, "Toast message", Toast.LENGTH_LONG);
    showToastMessage.show();
    savedTimeStamp=System.currentTimeMillis()/1000;
}

    @Override
             protected void onPause() {
                  super.onPause();
                  if(showToastMessage!=null)
                    {
                    showToastMessage.cancel();
                    }
    }

4 个答案:

答案 0 :(得分:4)

我发现仅使用Toast实例效果最佳。第一次分配它,然后用setText更新它并重新显示。然后取消按预期工作,因为只有一个实例要取消。

if (showToastMessage != null) {
    showToastMessage.setText("New Toast message");
    showToastMessage.show();
} else {
    showToastMessage = Toast.makeText(showString.this,"First Toast message",Toast.LENGTH_LONG);
    showToastMessage.show();
}

答案 1 :(得分:2)

创建一个这样的泛型类:

public class JToast {
private static Toast toast;
private static int LENGTH_LONG=Toast.LENGTH_LONG;
private static int LENGTH_SHORT=Toast.LENGTH_SHORT;

public static Toast makeText(Context context, String text, int duration) {
    if (toast != null) {
        toast.cancel();
    }
    toast = Toast.makeText(context, text, duration);
    return toast;
}
    public void show(){
        toast.show();
    }
}

只需拨打

即可举杯祝酒
JToast.makeText(context, "My Toast Message", JToast.LENGTH_SHORT).show();

答案 2 :(得分:0)

制作自己的单身人士课程,拥有handlerLooperThread。 制作类似showText(text, duration)的方法,在其中创建一个runnable。

在它的run方法中,使用你的文本制作一个Toast对象,然后将该帖子发送给处理程序。

Looper线程将实现代码以查看处理程序是否为null,如果是则将创建它。

这样,每次生成Toast消息时,都会立即在UI上更新,而不是在队列中排队。

答案 3 :(得分:0)

最终结论是:队列中的Toast无法停止。所以避免在que中使用toast。