Как отключить кнопку возврата, когда окно предупреждения находится на экране - PullRequest
12 голосов
/ 30 августа 2010

Я использовал функцию onKeyDown в деятельности ..... но когда кнопка назад кнопка нажата, она сначала отменяет диалоговое окно и переходит к нашему активность ... Я хочу, чтобы и активность, и диалоговое окно были закрыты, когда нажав кнопку назад или отключить кнопку назад, когда диалоговое окно окно показывается ...

может кто-нибудь предложить какие-либо решения для этого ....

Заранее спасибо,


Обновление

Здравствуйте. Спасибо за ваш ответ. progressDialog с .setCancelable(false); работает нормально.

Но здесь я хочу другое. Когда диалог прогресса запущен, я нажму кнопку BACK и хочу показать диалоговое окно с предупреждением, чтобы пользователь мог уведомить, что процесс запущен.

Есть ли какое-нибудь решение по этому поводу?

Пожалуйста, помогите мне.

Заранее спасибо.

Ответы [ 5 ]

58 голосов
/ 30 августа 2010

Вы пытались установить для свойства setCancelable() значение false

Как то так

progressDialog.setCancelable(false); 
2 голосов
/ 15 октября 2012

Может быть, это поможет в вашем случае:

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            // Show your Alert Box here
        }
        return false;
    }
0 голосов
/ 08 октября 2014

«Я хочу, чтобы и действие, и диалоговое окно были закрыты»

dialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
  @Override
  public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
    finish();
    return true;
  }
});

»или отключить кнопку« Назад », когда диалоговое окно отображается« Это может заблокировать возврат из диалога.При его динамическом создании добавьте:

dialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
  @Override
  public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
    return true;
  }
});

Возвращение true не позволяет закрыть это диалоговое окно, и его нельзя закрыть, щелкнув назад.Также я предлагаю добавить:

dialog.setCanceledOnTouchOutside(false);

Что помешает пользователю закрыть диалоговое окно, щелкнув за его пределами.

0 голосов
/ 11 августа 2013

Лично более чистое решение состояло в том, чтобы завершить LoginActivity перед запуском намерения вместо установки флагов в пакете нового действия или переопределения любых методов.Попробуйте что-то вроде этого ниже, где Логин - это ваше действие при входе в систему, а Главная - это первое действие после успешного входа в систему пользователя.

finish();
Intent intent = new Intent(Login.this, Home.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
0 голосов
/ 25 апреля 2013

Я просто хочу улучшить ответ @MoJo

alertDialog.setOnKeyListener(new DialogInterface.OnKeyListener() {

        @Override
        public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
               //Your handler   


               return false;
        }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...