Android, Как я могу закрыть приложение, когда в диалоге нажата кнопка назад? - PullRequest
0 голосов
/ 30 декабря 2011

В своей основной деятельности я вызываю диалог, который можно отменить.Я показываю это диалоговое окно, когда пользователь запускает приложение, когда он не подключен к Интернету.поэтому я показываю это диалоговое окно, чтобы попросить его подключиться к Интернету.

В этом диалоговом окне нет кнопки, и я хочу закрыть приложение, когда пользователь нажимает кнопку назад.В методе onKeyDown() я закрываю приложение (this.finish();), но проблема в том, что когда на экране отображается диалоговое окно, когда пользователь нажимает кнопку «Назад», это диалоговое окно исчезает, и моя основная деятельность - показ.

ЭтоКажется, onKeyDown () просто работает в основной деятельности, а не для диалога.Как закрыть мое приложение, когда отображается диалоговое окно и пользователь нажимает кнопку «Назад»?

Спасибо

=====> Обновление

Этокод моего пользовательского диалога:

private void initWarningDialog(){
        dialogWarning = new Dialog(DRMActivity.this, R.style.customDialogStyle);
        dialogWarning.setTitle("Warning!");
        dialogWarning.setContentView(R.layout.dialogwarning);
        dialogWarning.setCancelable(true);
    }

Ответы [ 3 ]

5 голосов
/ 30 декабря 2011

Только вызов метода finish ():

dialog.setPositiveButton("Ok",
    new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
            // Finish activity
            finish();
        }
    });

Обновление:

Поскольку у вас есть настраиваемый диалог, я бы предложил вам установить OnCancelListner, что-то вроде:

dialogWarning.setOnCancelListener(new OnCancelListener() {
            @Override
            public void onCancel(DialogInterface dialog) {
                // TODO Auto-generated method stub                  

                finish();
            }
 });

Обновление-2:

Это действительно раздражает, потому что как пользователь может узнать, если он нажмет клавишу возврата, тогда фактическая активность закроется.Вместо этого вы должны предоставить по крайней мере кнопку «ОК», чтобы позволить пользователю нажать.

2 голосов
/ 30 декабря 2011

OnCancelListener может быть полезным.

 alert.setOnCancelListener(new OnCancelListener() {
            @Override
            public void onCancel(DialogInterface dialog) {
                // TODO Auto-generated method stub                  

                finish();
            }
 });
2 голосов
/ 30 декабря 2011

Установите OnCancelListener для диалога, используя setOnCancelListener, и завершите действие в onCancel методе OnCancelListener.

...