我在运行“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)
。即在alertDialog2
的onShow
方法中,使用以下代码:
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/