Отключить кнопку назад в Android
Как отключить кнопку возврата в Android при выходе из приложения?
19 ответов
Переопределите метод onBackPressed и ничего не делайте, если вы хотите обработать кнопку возврата на устройстве.
@Override
public void onBackPressed() {
if (!shouldAllowBack()) {
doSomething();
} else {
super.onBackPressed();
}
}
Если вы ищете Android API уровня до 1.6.
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
//preventing default implementation previous to android.os.Build.VERSION_CODES.ECLAIR
return true;
}
return super.onKeyDown(keyCode, event);
}
И если вы ищете более высокий уровень API 2.0 и выше, это будет отлично работать
@Override
public void onBackPressed() {
// Do Here what ever you want do on back press;
}
напишите этот код в своей активности, чтобы предотвратить нажатие кнопки "назад"
Вы можете сделать это простым способом. Не вызывайте super.onBackPressed().
Примечание:- Не делайте этого до тех пор, пока у вас нет веских причин для этого.
@Override
public void onBackPressed() {
super.onBackPressed();
// dont call **super**, if u want disable back button in current screen.
}
Просто переопределите метод onBackPressed().
@Override
public void onBackPressed() { }
Я использую это.............
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode==KeyEvent.KEYCODE_BACK)
Toast.makeText(getApplicationContext(), "back press",
Toast.LENGTH_LONG).show();
return false;
// Disable back button..............
}
Просто переопределите метод onBackPressed(), и нет необходимости вызывать суперкласс метода onBackPressed или другие.
@Override
public void onBackPressed()
{
}
Или передайте текущую активность в метод onBackPressed().
@Override
public void onBackPressed()
{
startActivity(new Intent(this, myActivity.class));
finish();
}
Замените название требуемой активности на myActivity.
если вы используете фрагмент, то прежде всего вызовите метод callParentMethod()
public void callParentMethod(){
context.onBackPressed(); // instead of context use getActivity or something related
}
затем вызовите пустой метод
@Override
public void onBackPressed()
{
}
Если вы хотите убедиться, что ваше клиентское приложение для Android вышло из системы с какого-либо сервера до того, как ваша активность будет уничтожена -> выйдите из службы со своим собственным потоком (это то, что вы должны делать в любом случае).
Отключение кнопки "назад" ничего не решит для вас. У вас все равно будет та же проблема, когда пользователь, например, получает телефонный звонок. Когда телефонный звонок получен, ваша активность имеет столько же шансов быть убитым, чем получить надежный ответ из сети.
Вот почему вы должны позволить службе ждать в своем потоке ответа от сети, а затем повторить попытку, если это не удалось. Служба Android не только намного менее вероятна, чтобы ее убили до того, как она получит ответ, но если она действительно будет убита до завершения работы, она всегда может быть восстановлена с помощью AlarmManager для повторной попытки.
Отключить кнопку назад в android
@Override
public void onBackPressed() {
return;
}
Вы можете переопределить onBackPressed()
метод в вашей деятельности и удалите вызов суперкласса.
@Override
public void onBackPressed() {
//remove call to the super class
//super.onBackPressed();
}
Если вы используете FragmentActivity
, тогда делай так
Первый звонок Это внутри вашего Fragment
,
public void callParentMethod(){
getActivity().onBackPressed();
}
а потом позвони onBackPressed
метод в сторону твоего родителя FragmentActivity
учебный класс.
@Override
public void onBackPressed() {
//super.onBackPressed();
//create a dialog to ask yes no question whether or not the user wants to exit
...
}
Просто с помощью этого кода: Если вы хотите отключить обратную связь, вы не используете super.OnBackPressed();
@Override
public void onBackPressed() {
}
Если вы хотите отключить приложение во время выхода из системы, вы можете открыть диалоговое окно, которое нельзя отменить.
В Android добавлена функция жестов смахивания назад из Android 13.
Андроид 13 и выше
От Android 13 и вышеonBackPress
не рекомендуется. Итак, для Android 13 выше вам нужно использоватьonBackPressedDispatcher
. Сначала вам нужно добавить обратный вызов вonCreate
Предпочтительно добавлять активность сразу после setContentView или представления привязки.
ДЖАВА
getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) { // true: for prevent back and do something in handleOnBackPressed
@Override
public void handleOnBackPressed() {
// Do Something
}
});
Котлин
onBackPressedDispatcher.addCallback(object: OnBackPressedCallback(true) {// true: for prevent back and do something in handleOnBackPressed
override fun handleOnBackPressed() {
// Do Something
}
})
Ниже Android 13
Джава
@Override
public void onBackPressed() {
if (shouldAllowBack()) { // true for allow back
super.onBackPressed();
} else {
//do Something
}
}
Котлин
override fun onBackPressed() {
if (shouldAllowBack()) { // true for allow back
super.onBackPressed()
} else {
//do Something
}
}
Помимо этих двух методов из ответа выше.
onBackPressed () (уровень API 5, Android 2.0)
onKeyDown () (Уровень API 1, Android 1.0)
Вы также можете переопределить dispatchKeyEvent()
(API Level 1, Android 1.0) вот так,
dispatchKeyEvent()
(Уровень API 1, Android 1.0)
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
// TODO Auto-generated method stub
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
return true;
}
return super.dispatchKeyEvent(event);
}
Удалить super.onBackPressed()
от public void onBackPressed()
отлично работают. его протестировано в Android 9
Вам просто нужно переопределить метод для кнопки назад. Вы можете оставить метод пустым, если хотите, чтобы при нажатии кнопки "назад" ничего не происходило. Пожалуйста, посмотрите на код ниже:
@Override
public void onBackPressed()
{
// Your Code Here. Leave empty if you want nothing to happen on back press.
}
Для меня просто переопределение onBackPressed()
не сработало, но явно указывало, с какого действия оно должно начинаться:
@Override
public void onBackPressed(){
Intent intent = new Intent(this, ActivityYouWanToGoBack.class);
startActivity(intent);
}
Попробуй это:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
return true;
}
return super.onKeyDown(keyCode, event);
}
Андроид 13 Котлин
onBackPressedDispatcher.addCallback(object: OnBackPressedCallback(true) {
/* override back pressing */
override fun handleOnBackPressed() {
//Your code here
}
})