下面的代码显示了我目前的实现,这里创建一个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();
}
}
答案 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)
制作自己的单身人士课程,拥有handler
和LooperThread
。
制作类似showText(text, duration)
的方法,在其中创建一个runnable。
在它的run方法中,使用你的文本制作一个Toast对象,然后将该帖子发送给处理程序。
Looper线程将实现代码以查看处理程序是否为null,如果是则将创建它。
这样,每次生成Toast消息时,都会立即在UI上更新,而不是在队列中排队。
答案 3 :(得分:0)
最终结论是:队列中的Toast无法停止。所以避免在que中使用toast。