我有一个对话框,检查互联网是否开启。如果它没有打开,我会显示一个弹出窗口,让您可以选择打开数据或退出应用程序。如果您选择打开数据,则会转到设置页面以打开数据。问题出现了:当你从设置页面按回来时,对话框仍然存在,它不会被解雇。这是代码:
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中都被调用,这可能是问题的一部分。
答案 0 :(得分:4)
在dialog.dismiss()之前调用startActivity()。这可以控制新活动。
答案 1 :(得分:3)
首先,当您在android中启动应用程序时,activitysequens如下:
活动开始 - > onCreate()
被称为 - > onResume()
被称为 - >活动正在运行。
当您从设置转到应用时,onResume()
会被调用,因此您只需要在onResume()
中进行检查。