2011-08-24 108 views
1

我有一个对话框,查看互联网是否打开。如果它没有打开,我会弹出一个窗口,让您选择打开或关闭应用程序。如果您选择打开数据,它会将您带到设置页面打开数据。问题如下:当您从设置页面向后按下时,对话框仍然存在,但不会被解除。这里是代码:Android:为什么这个对话框会弹出两次?

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中被调用,这可能是问题的一部分。

回答

4

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

3

首先,当你开始你的应用程序在Android中activitysequens如下:

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

当您从设置返回到您的应用程序onResume()被调用时,所以您只需要在onResume()中进行检查。

+0

这也有帮助,但另一个问题,我与我的问题有关:)。谢谢。 – Nick

+0

应该在onCreate()或onResume()中设置诸如Internet或Location之类的检查吗? – charany1