Android: почему это диалоговое окно появляется дважды? - PullRequest
1 голос
/ 24 августа 2011

У меня есть диалог, который проверяет, включен ли интернет.Если он не включен, я отображаю всплывающее окно, в котором вы можете включить данные или выйти из приложения.Если вы решите включить данные, вы перейдете на страницу настроек для включения данных.Вот проблема: когда вы нажимаете обратно со страницы настроек, диалоговое окно все еще присутствует, оно не закрывается.Вот код:

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 ]

4 голосов
/ 24 августа 2011

Вы вызываете startActivity () перед dialog.dismiss (). Это дает контроль над новой деятельностью.

3 голосов
/ 24 августа 2011

Прежде всего, когда вы запускаете свое приложение в Android, показатели активности выглядят следующим образом:

действие начинается -> onCreate() вызывается -> onResume() вызывается -> действие выполняется.

Когда вы переходите от настройки и возвращаетесь к своему приложению, вызывается onResume(), поэтому вам нужно только сделать проверку в onResume().

...