我见过很多关于取消吐司的问题。他们都没有工作。
我有一个自定义Toast。该代码只有一行与http://developer.android.com/guide/topics/ui/notifiers/toasts.html#CustomToastView
相同区别如下。
在这个方法的开头,我添加了以下行来取消吐司。
if (toast!=null){
toast.cancel();
}
当用户选择(onClick)视图/布局时,将调用该方法。问题是当用户选择几次时,toast将排队(toast.cancel不起作用)。
任何解决方案?
[更新] 我尝试将toast对象设为静态变量。还是不行。
答案 0 :(得分:7)
我遇到了同样的问题(自定义吐司排队)并找到了解决方案。在我的情况下,它运作良好。
拥有自定义Toast对象initially set to null
。
如果为null,则使用“new”创建新的自定义Toast对象。
就您在同一活动中而言,不要“新”来创建新对象。相反,使用该对象。由于setText()
在这种情况下不起作用,因此请使用setView()
,就像使用自定义吐司一样。
这样show(), cancel(), show(), cancel()
就像我期望的那样工作。没有延迟,没有排队。
希望这有帮助。
答案 1 :(得分:2)
最后,我创建了一个自定义对话框,以阻止用户做任何其他操作(并避免弹出多个toast)。添加了一个onClick侦听器事件,以便在用户单击该对话框时关闭该对话框。
很遗憾Toast.cancel()不起作用。
答案 2 :(得分:0)
toast.setDuration(Toast.LENGTH_LONG);
中的
你使用toast.setDuration(Toast.LENGTH_SHORT);
或者特定时间。自动取消。我们无法取消它
答案 3 :(得分:-1)
将此代码用于自定义文本:
LayoutInflater mInflater=LayoutInflater.from(context);
View view=mInflater.inflate(R.layout.tost_layout,null);
Toast toast=new Toast(this);
toast.setView(view);
toast.show();