Android Overriding onBackPressed()
Можно ли переопределить onBackPressed()
только для одного действия?
При нажатии кнопки "Назад" я хочу вызвать диалоговое окно для определенного действия, но во всех других действиях я хочу, чтобы оно работало так же, как раньше (переход к предыдущим действиям).
РЕДАКТИРОВАНИЕ
Спасибо всем за ваши ответы, у меня уже было все, как вы сказали мне, но моя проблема заключалась в том, что, когда я нажимал кнопку "Назад" в другом действии, я переходил к своему предыдущему действию (то, где у меня была кнопка "Назад" переопределено), и я думал, что это не работает, я думал, что он переопределяет onBackPressed()
во всем приложении, теперь я получил его.
Ответы
Ответ 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();
}