2

下面的代码显示了我目前的实现,这里创建了一个 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

4 回答 4

6

我发现仅在实例上使用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();
}
于 2013-01-15T05:47:23.313 回答
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();
于 2015-04-26T19:13:18.747 回答
0

制作自己的单例类,具有 ahandler和 a LooperThread。制作一个类似于showText(text, duration)在其中创建可运行文件的方法。

在它的运行方法中,使用您的文本创建一个 Toast 对象,然后发布到处理程序。

Looper 线程将执行代码以查看处理程序是否为空,如果是则创建它。

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

于 2013-01-15T07:01:04.933 回答
0

最后的结论是:阙的吐司是停不下来的。所以避免在 que 中使用 toast。

于 2013-02-15T09:07:52.097 回答