Как управлять кнопкой возврата в действии

Как обращаться с кнопкой «Назад» в действии. Где у меня есть кнопки. Если я нажму на одну из кнопок, она будет перенаправлена ​​на нужные мне кнопки. Он работает нормально, но когда я нажимаю кнопку «Назад», он заканчивается.

Как решить эту проблему. У меня есть только одно действие для всех этих кнопок. Заранее спасибо.

@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK)) { return false; //I have tried here true also } return super.onKeyDown(keyCode, event); } 

Я использовал выше код для обработки кнопки возврата, но не работает. Когда я нажимаю кнопку «назад», она сама ударяет туда.

Вы можете справиться с этим так:

для уровня API 5 и выше

 @Override public void onBackPressed() { // your code. } 

старше API 5

 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { // your code return true; } return super.onKeyDown(keyCode, event); } 

В дополнение к вышесказанному, я лично рекомендую

 onKeyUp(): 

Программно говорящее нажатие клавиши запускается, когда пользователь сначала нажимает ключ, но он будет повторяться, пока пользователь удерживает нажатой клавишу. *

Это остается верным для всех платформ разработки.

В Google было установлено, что если вы перехватываете кнопку BACK в представлении, вы должны отследить KeyEvent с помощью starttracking на keydown, а затем вызвать с помощью keyup.

 public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { event.startTracking(); return true; } return super.onKeyDown(keyCode, event); } public boolean onKeyUp(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.isTracking() && !event.isCanceled()) { // *** Your Code *** return true; } return super.onKeyUp(keyCode, event); } 

Для кнопки возврата аппаратного устройства и мягкой домашней (обратной) кнопки, например «<-», это то, что работает для меня. (* Примечание. У меня есть панель приложений / панель инструментов в действии)

 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: //finish(); onBackPressed(); break; } return true; } @Override public void onBackPressed() { //Execute your code here finish(); } 

Ура!

Более простой подход – захватить кнопку «Назад» и вызвать moveTaskToBack (true) следующим образом:

 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { moveTaskToBack(true); return true; } return super.onKeyDown(keyCode, event); } 

Android 2.0 представил новый метод onBackPressed, и эти рекомендации о том, как обращаться с кнопкой «Назад»

Вы должны использовать:

 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.ECLAIR && keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { // Take care of calling this method on earlier versions of // the platform where it doesn't exist. onBackPressed(); } return super.onKeyDown(keyCode, event); } @Override public void onBackPressed() { // This will be called either automatically for you on 2.0 // or later, or by the code above on earlier versions of the // platform. return; } 

Как определено здесь: http://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html

Если вы используете более старую версию для компиляции кода, замените файл android.os.Build.VERSION_CODES.ECLAIR на 5 (например, вы можете добавить частный int с именем ECLAIR)

Это помогло мне ..

 @Override public void onBackPressed() { startActivity(new Intent(currentActivity.this, LastActivity.class)); finish(); } 

ИЛИ????? даже вы можете использовать это для переключения курсора также

 @Override public void onBackPressed() { DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); if (drawer.isDrawerOpen(GravityCompat.START)) { drawer.closeDrawer(GravityCompat.START); } else { super.onBackPressed(); } startActivity(new Intent(currentActivity.this, LastActivity.class)); finish(); } 

Надеюсь, это вам поможет .. 🙂

  • Как разобрать JSON в Android?
  • Как сохранить объект в базе данных sqlite?
  • NetworkOnMainThreadException
  • R не может быть разрешено переменной
  • Android Studio - невозможно разрешить символ «firebase»
  • Не удалось импортировать новый проект Gradle в андроид-студию
  • Java: необходимо каким-то образом сократить этот код
  • Как использовать Android-камеру или Camera2 API для поддержки старых и новых версий API без заметок?
  • Activity.finish (), но активность остается загруженной в память
  • Хранилища Android buildscript: jcenter VS mavencentral
  • ListView в AlertDialog
  • Давайте будем гением компьютера.