У меня есть диалог, который проверяет, включен ли интернет. Если он не включен, отображается всплывающее окно, в котором вы можете включить данные или выйти из приложения. Если вы решите повернуть данные, вы перейдете на страницу настроек, чтобы включить данные. Вот проблема: когда вы нажмете обратно с страницы настроек, диалог все еще присутствует, он не упускается. Вот код:
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, которые могут быть частью проблемы.
Вы вызываете startActivity() перед dialog.dismiss(). Это дает контроль над новым действием.
Прежде всего, когда вы запускаете свое приложение в android, действия происходят следующим образом:
запускается активность → onCreate()
→ onResume()
→ активность.
Когда вы переходите из настройки и возвращаетесь в свое приложение onResume()
, вы должны только выполнить проверку onResume()
.