Android:为什么这个对话框弹出两次?

时间:2011-08-24 19:48:49

标签: android dialog alertdialog

我有一个对话框,检查互联网是否开启。如果它没有打开,我会显示一个弹出窗口,让您可以选择打开数据或退出应用程序。如果您选择打开数据,则会转到设置页面以打开数据。问题出现了:当你从设置页面按回来时,对话框仍然存在,它不会被解雇。这是代码:

public void calldialog() {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage(
            "You need to enable an internet connection in order to use this Chirps:")
            .setCancelable(true)
            .setPositiveButton("Turn on Data",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {

                            Intent newintent = new Intent(
                                    android.provider.Settings.ACTION_WIRELESS_SETTINGS);
                            newintent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
                            startActivity(newintent);
                            dialog.dismiss();
                        }
                    })
            .setNegativeButton("Exit",new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            Main.this.finish();
                        }
                    });
    builder.show();

}

当我只有一个选项时,对话框功能正常。但是只要我添加第二个选项,它就会使按钮显示两次。包含calldialog()的互联网检查函数在oncreate和onresume中都被调用,这可能是问题的一部分。

2 个答案:

答案 0 :(得分:4)

在dialog.dismiss()之前调用startActivity()。这可以控制新活动。

答案 1 :(得分:3)

首先,当您在android中启动应用程序时,activitysequens如下:

活动开始 - > onCreate()被称为 - > onResume()被称为 - >活动正在运行。

当您从设置转到应用时,onResume()会被调用,因此您只需要在onResume()中进行检查。