android - 如果没有显示 Toast,则显示 Toast

标签 android runnable toast android-toast

我有几个可以在 fragment 上单击的按钮。单击每个按钮后,我会显示一条 Toast 消息,每个按钮都完全相同。因此,如果你一个接一个地按下 5 个不同的按钮,你将叠加 5 个 toast 消息,最终会长时间显示相同的消息。如果当前没有正在运行的 Toast,我想做的是显示一个 Toast。

我用来显示 Toast 消息的方法

public void showToastFromBackground(final String message) {
        runOnUiThread(new Runnable() {

            @Override
            public void run() {
                Toast.makeText(MainActivity.this, message, Toast.LENGTH_LONG).show();
            }
        });
    }

按下按钮时,我只需调用 showToastFromBackground("Text to show");

我真正想要的是类似的东西

public void showToastFromBackground(final String message) {
    if(toastIsNotAlreadyRunning)
    {
        runOnUiThread(new Runnable() {

        @Override
        public void run() {
            Toast.makeText(MainActivity.this, message, Toast.LENGTH_LONG).show();
        }
    });
    }       
}

最佳答案

使用:

toast.getView().isShown();

或者:

if (toast == null || toast.getView().getWindowVisibility() != View.VISIBLE) {
    // Show a new toast...
}

编辑:

Toast lastToast = null; // Class member variable

public void showToastFromBackground(final String message) {
    if(isToastNotRunning()) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                lastToast = Toast.makeText(MainActivity.this, message, Toast.LENGTH_LONG);
                lastToast.show();
            }
        });
    }       
}

boolean isToastNotRunning() {
    return (lastToast == null || lastToast.getView().getWindowVisibility() != View.VISIBLE);
}

关于android - 如果没有显示 Toast,则显示 Toast,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29545046/

相关文章:

android - 图库安卓 :unselectedAlpha

android - 为什么在recyclerview android中滚动后突出显示的项目丢失

java - ScheduledThreadPoolExecutor,如何停止可运行类JAVA

android - Toast 在 try/catch Thread.sleep() 之前不会显示

android - 来自资源字符串的 Toast.makeText

android - ListView 不检查 Android 1.5 上的项目

java - 从mysql数据库获取数据并显示在android上

java - 理解 Java 线程的并发性

android - 无法将处理程序和可运行对象放置在 OnLocationChanged() 内

Android Toast.设置重力导致应用程序崩溃