Как отключить кнопку "Назад", когда окно предупреждения находится на экране

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

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

Спасибо заранее,


Обновление

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

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

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

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

Спасибо заранее.

Ответ 1

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

Что-то вроде этого

progressDialog.setCancelable(false); 

Ответ 2

Возможно, это поможет в вашем случае:

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            // Show your Alert Box here
        }
        return false;
    }

Ответ 3

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

alertDialog.setOnKeyListener(new DialogInterface.OnKeyListener() {

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


               return false;
        }
});

Ответ 4

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

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);

Ответ 5

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

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);

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