java - onClick 任务在运行任务之前不等待 AlertDialog 显示

标签 java android

我在运行“runmods(activity);”之前尝试显示alertdialog2时遇到问题

一旦按下按钮,它就不会显示alertdialog2并立即运行“runmods”

我想要的是能够按“执行”,然后显示alertdialog2,然后 runmods 运行。

public static void execute(final MainActivity activity) {
    Rooted.rooted(activity);
    AlertDialog alertDialog = new AlertDialog.Builder(activity).create();
    final AlertDialog alertDialog2 = new AlertDialog.Builder(activity).create();
    alertDialog.setTitle("Confirm");
    alertDialog.setMessage("Are you sure you want to execute and reboot?");
    alertDialog2.setTitle("Executing");
    alertDialog2.setMessage("Your phone will now reboot");

    alertDialog.setButton("Yes", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {

            alertDialog2.setOnShowListener(new AlertDialog.OnShowListener() {
                @Override
                public void onShow(DialogInterface dialog) {

                    runmods(activity);
                }
            });
            alertDialog2.show();
        }
    });
    alertDialog.setButton2("No", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
        }
    });
    alertDialog.show();
}

最佳答案

我的建议是在延迟后运行的新Runnable中调用runmods(activity)。即在alertDialog2onShow方法中,使用以下代码:

new Handler().postDelayed(new Runnable(){
    @Override
    public void run() {
        runmods(activity);
    }
}, 4000); //alertDialog2 will be displayed for 4 seconds before runmods is called

所以完整的修改后的代码将是:

public static final int DIALOG2_DELAY_SECS = 4;

public static void execute(final MainActivity activity) {
    Rooted.rooted(activity);
    final AlertDialog alertDialog2 = new AlertDialog.Builder(this).create();
    alertDialog2.setTitle("Executing");
    alertDialog2.setMessage("Your phone will now reboot");
    alertDialog2.setOnShowListener(new AlertDialog.OnShowListener() {
        @Override
        public void onShow(DialogInterface dialog) {
            new Handler().postDelayed(new Runnable(){
                @Override
                public void run() {
                    runmods(activity);
                }
            }, DIALOG2_DELAY_SECS*1000);
        }
    });
    AlertDialog alertDialog = new AlertDialog.Builder(activity).create();
    alertDialog.setTitle("Confirm");
    alertDialog.setMessage("Are you sure you want to execute and reboot?");
    alertDialog.setButton("Yes", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
            alertDialog2.show();
        }
    });
    alertDialog.setButton2("No", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
        }
    });
    alertDialog.show();
}

关于java - onClick 任务在运行任务之前不等待 AlertDialog 显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18708152/

相关文章:

Android: ScrollView 内的线性布局未显示

java - 从 java servlet Web 应用程序将文件上传到我的保管箱

java - Gradle项目中的IntelliJ IDEA编码问题

java - 使用 JNI 从 C++ 程序执行 java jar,使用 g++ 或 eclipse

java - 有人可以帮助我理解 java 中 try-catch block 的工作原理吗?

android - 如何在android中发送带有电子邮件的批处理?

java - RSS 提要描述返回 '<'

android - Superpowered - 导出到带有混音器和解码器问题的文件(不同的 sampleRates 和 samplesPerFrame)

Android 应用唯一许可 key

java - Codility PermCheck 解决方案不适用于少数数据集