Как управлять кнопкой возврата в действии
Как обращаться с кнопкой «Назад» в действии. Где у меня есть кнопки. Если я нажму на одну из кнопок, она будет перенаправлена на нужные мне кнопки. Он работает нормально, но когда я нажимаю кнопку «Назад», он заканчивается.
Как решить эту проблему. У меня есть только одно действие для всех этих кнопок. Заранее спасибо.
@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); }
Я использовал выше код для обработки кнопки возврата, но не работает. Когда я нажимаю кнопку «назад», она сама ударяет туда.
- Как создать заставку?
- Начать fragment через Intent внутри fragmentа
- Основные шаги для использования MQTT в android
- Как отобразить маршрут между двумя геокоординатами на картах Google?
- преобразование активности в fragment
- Как получить идентификатор приложения Android?
- Какой самый простой способ получить текущий день недели в Android?
- isValidFragment Android API 19
- Получение широты и долготы за 30 секунд
- ActivityManager.getRunningTasks - устаревший андроид
- Сохранять состояние fragmentа между действиями
- Как изменить стиль TextView во время выполнения
- Как использовать службу WCF с Android
Вы можете справиться с этим так:
для уровня 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(); }
Надеюсь, это вам поможет .. 🙂