2010-09-01 4 views
21

Я пишу приложение, которое будет иметь две операции, когда пользователь нажимает кнопку «Назад» во втором действии, и появляется диалоговое окно с просьбой подтвердить действие. Итак, как мне это перехватить? Я серьезно сомневаюсь в этом, потому что backstack является частью самой ОС. Кто-нибудь нашел обходное решение?Перехват кнопки «Назад»

+0

Подумайте об этом. Это нестандартное поведение Android и может раздражать ваших пользователей. Вы пытаетесь избежать их потери несохраненных данных? – I82Much

+0

Да точно @ I82Much! –

ответ

50

В деятельности вы можете просто переопределить

onBackPressed()

редактировать: это апи лвл 5+:/для 4 и ниже вам нужно переопределить OnKeyDown()

+0

Ницца, спасибо @schwiz –

10

Просто переопределите метод onKeyDown в своей деятельности и найдите кнопку «Назад». Верните true так, чтобы событие было уничтожено.

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     //Do something here 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 
+0

+1, я сделал это раньше, и это определенно работает, хотя, когда я использовал его, это было до того, как я понял понятие нескольких действий ... –

+0

// Делать что-то здесь (я пытаюсь показать тост за мой тестовый код) не работает для меня. И когда я нажимаю кнопку «Назад», ничего не происходит. –

+0

Моя ошибка, я не назвал Toast.show(). Рабочий код. Thanx @skorulis –

3

Как указал schwiz, вы хотите переопределить метод onBackPressed() в своем классе активности (http://developer.android.com/reference/android/app/Activity.html#onBackPressed()).

Я просто хотел добавить, что если вы действительно захотите на какой-то стадии продолжить или вернуться к стандарту обратной операции (после того, как скажем, отобразив диалог), вы просто вызываете super.onBackPressed() или ActivityName.super.onBackPressed() из любого места в Управлении.

Смежные вопросы