Почему кнопка «Назад» не обнаруживается во вкладке «Мути»? - PullRequest
1 голос
/ 16 июня 2011

Основная активность Это имеет 4 вкладки (TabHost). Я переопределил onBackPress() в MainActvity, а также все 4 действия. Эта кнопка показывает пользователю диалоговое окно и для подтверждения выхода Когда приложение запустится. Это показывает 1-ую вкладку. Тогда, если я нажму обратно, это работает нормально. Но если я перейду к следующей 3 вкладке и затем нажму назад, приложение остановится. OnDestroy() Main называется. Но нет диалога для пользователя. Даже замечание - печать в журнале cat. То, что я написал в onBackPressed() метод From и 5 видов деятельности, включая MainActivity.

Я также пробую onKeyDown() для возврата, но результат такой же? Кто-нибудь испытывает то же самое? Пожалуйста, помогите мне.

Ответы [ 3 ]

1 голос
/ 28 июля 2011

Я узнал, что было трудно открыть новое действие на предыдущих вкладках, когда я использую TabHost.Я нашел его в Google и обнаружил, что GroupActivity является лучшим решением этой проблемы. Пример GroupActvity Но у GroupActivity возникла та же проблема при открытии нового действия на предыдущей вкладке.кнопка "Назад" не работает должным образом для новой активности.После поиска я обнаружил, что это было связано с акцентом на родительскую активность.Я должен сделать

setFocusable (true);requestFocus ();

на моем новом компоненте активности, чтобы получить фокус.

Сейчас я использую GroupActivity для настройки вкладки и действий. Так как я также поддерживаю стек идентификаторов действий в родительскомактивность, чтобы я мог вспомнить недавнюю активность, когда пользователь нажимает кнопку назад.

в противном случае, если вы НЕ собираетесь реализовывать фокус действия, вам следует поддерживать стек в родительском элементе, и при нажатии кнопки назад он инициирует родительский метод onBackPressed ();и вы можете вызвать дочернюю функцию onBackPressed (), как описано в ссылке.

onBackPressed () не работает внутри ActivityGroup

0 голосов
/ 22 августа 2011

Я столкнулся с этой проблемой, но я ее уже снимал. @Override public boolean onKeyDown (int keyCode, событие KeyEvent) { if (keyCode == KeyEvent.KEYCODE_BACK) { showExitDialog (); вернуть истину; }
return super.onKeyDown (keyCode, event); }

public void showExitDialog()
{
    new AlertDialog.Builder(this)
    .setTitle("Attention")
    .setMessage("Do you want to exit this application")
    .setPositiveButton("YES", exitListener)
    .setNegativeButton("No", cancelListener)
    .show();
}
at the first time i lost a "reture true" in onkeydown()
0 голосов
/ 16 июня 2011

Хорошо, я точно знаю, что вы всегда будете вызывать onBackPressed () в MainActity, если вы работаете с tabHost, а не в дочерних представлениях. Единственное, что приходит на ум, - это если вы использовали событие в методе onBackPressed (верните true), потому что если вы этого не сделали, оно пойдет и все равно последует процессу по умолчанию и уничтожит вашу активность.

...