android – 如何立即用第二个toast替换当前的toast而不等待当前的toast完成?

参见英文答案 > How to prevent Multiple Toast Overlaps7个
我有很多按钮.点击其中的每一个我都会显示一个Toast.但是当一个toast加载并在视图中显示时,单击另一个按钮并且在显示的那个完成之前不会显示toast.

所以,我想找出一种方法来检测当前上下文中是否显示吐司.有没有办法知道是否正在显示吐司,以便我可以取消它并显示一个新的.

解决方法

您可以在Activity的变量中缓存当前Toast,然后在显示下一个toast之前取消它.这是一个例子:
Toast m_currentToast;

void showToast(String text)
{
    if(m_currentToast != null)
    {
        m_currentToast.cancel();
    }
    m_currentToast = Toast.makeText(this,text,Toast.LENGTH_LONG);
    m_currentToast.show();

}

另一种即时更新Toast消息的方法:

void showToast(String text)
{
    if(m_currentToast == null)
    {   
        m_currentToast = Toast.makeText(this,Toast.LENGTH_LONG);
    }

    m_currentToast.setText(text);
    m_currentToast.setDuration(Toast.LENGTH_LONG);
    m_currentToast.show();
}

相关文章

ADB Remote ATV Android TV 的遥控器,基于 ADB Shell 命令 ...
使用Flutter自带的SearchDelegate组件实现搜索界面,通过魔改...
上篇文章讲解了怎么使用Kotlin的协程配合Retrofit发起网络请...
安卓开发——WebView+Recyclerview文章详情页,解决高度...
Android 如何解决dialog弹出时无法捕捉Activity的back事件 在...