Подтвердить что ты не робот

Android Overriding onBackPressed()

Можно ли переопределить onBackPressed() только для одного действия?

При нажатии кнопки "Назад" я хочу вызвать диалоговое окно для определенного действия, но во всех других действиях я хочу, чтобы оно работало так же, как раньше (переход к предыдущим действиям).

РЕДАКТИРОВАНИЕ

Спасибо всем за ваши ответы, у меня уже было все, как вы сказали мне, но моя проблема заключалась в том, что, когда я нажимал кнопку "Назад" в другом действии, я переходил к своему предыдущему действию (то, где у меня была кнопка "Назад" переопределено), и я думал, что это не работает, я думал, что он переопределяет onBackPressed() во всем приложении, теперь я получил его.

4b9b3361

Ответ 1

Да. Только переопределите его в этом Activity с помощью

@Override
public void onBackPressed()
{
     // code here to show dialog
     super.onBackPressed();  // optional depending on your needs
}

не помещайте этот код в любой другой Activity

Ответ 2

Переопределите метод onBackPressed() в соответствии с примером с помощью codeMagic и удалите вызов super.onBackPressed();, если вы не хотите, чтобы действие по умолчанию (завершение текущей активности) выполнялось.

Ответ 3

Вы можете просто вызвать onBackPressed(), и если вы хотите, чтобы какая-либо активность отображалась после кнопки "Назад", вы отметили

Intent intent = new Intent(ResetPinActivity.this, MenuActivity.class);
    startActivity(intent);
    finish();

который работал у меня.

Ответ 4

Просто вызовите метод onBackPressed() в действии, которое вы хотите отобразить в диалоговом окне, и внутри него отобразится ваш диалог.

Ответ 5

Просто используйте следующий код с инициализацией поля

private int count = 0;
    @Override
public void onBackPressed() {
    count++;
    if (count >=1) {
        /* If count is greater than 1 ,you can either move to the next 
        activity or just quit. */
        Intent intent = new Intent(ResetActivity.this, LoginActivity.class);
        startActivity(intent);
        finish();
        overridePendingTransition
        (R.anim.push_left_in, R.anim.push_left_out);
        /* Quitting */
        finishAffinity();
    } else {
        Toast.makeText(this, "Press back again to Leave!", Toast.LENGTH_SHORT).show();

        // resetting the counter in 2s
        Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                count = 0;
            }
        }, 2000);
    }
    super.onBackPressed();
}

Ответ 6

Лучший и самый общий способ управления музыкой - создать материю, в которой вы переопределяете startActivity(Intent intent) - в нее вы помещаете shouldPlay=true, и onBackPressed() - в него вы помещаете shouldPlay = true. onStop - в нем вы помещаете условный mediaPlayer.stop с shouldPlay как условие

Затем просто добавьте материнскую активность ко всем другим действиям, и не требуется дублирование кода.

Ответ 7

Сначала вы должны учитывать, что если ваша деятельность, которую я назвал A, расширяет другую активность (B) и в обоих

их вы хотите использовать onbackpressed, тогда каждый код, который у вас есть в B, также работает в A. Поэтому, если вы хотите отделить их, вы должны их разделить. Это означает, что A не должен распространяться на B, тогда вы можете переадресовать отдельно для каждого из них.

Ответ 8

Попробуйте это.

  @Override
public void onBackPressed(){
        super.onBackPressed();
         Intent i=new Intent(Intent.ACTION_MAIN);
        i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        finish();
}