如何删除当前显示的所有toast消息?
在我的应用中,有一个列表,当用户点击一个项目时,会显示一条吐司消息,10个项目- 10个吐司消息。
因此,如果用户点击10次,然后按下菜单按钮,他们必须等待几秒钟,直到他们能够阅读菜单选项文本。
它不应该是这样的:)
发布于 2015-03-10 01:13:46
使用上面Madur的出色答案,我将其扩展为一个处理不同类型消息的类:
public class ToastManager {
private Toast toastWarningMessage;
private Toast toastAddMessage;
...
public void messageWarning(Context context, String message) {
if(toastWarningMessage == null) {
toastWarningMessage = Toast.makeText(context, message, Toast.LENGTH_SHORT);
} else {
toastWarningMessage.cancel();
toastWarningMessage.setText(message);
}
toastWarningMessage.show();
}
public void messageAdd(Context context, String message) {
if(toastAddMessage == null) {
toastAddMessage = Toast.makeText(context, message, Toast.LENGTH_SHORT);
} else {
toastAddMessage.cancel();
toastAddMessage.setText(message);
}
toastAddMessage.show();
}
...
}这是在我的主活动中调用的:
ToastManager toastManager;
...
private void toastWarningMessage(String message) {
if(toastManager == null) toastManager = new ToastManager();
toastManager.messageWarning(this, message);
}对消息进行分类的原因是为了确保重要消息不会被覆盖。这个解决方案似乎很容易重用,因为它只涉及到重命名Toast和函数名称。
当用户按下垃圾邮件按钮时,每次都会取消相同类型的消息。唯一的问题是,如果用户可以垃圾邮件的混合。这导致第一条消息重复,一旦它最终过期,其他消息各显示一次。这并不是一个大问题,但需要注意的是。
我还没有研究过拥有多个Toast实例的可能的缺点。
https://stackoverflow.com/questions/2755277
复制相似问题