onKeyDown или onBackPressed в родительском действии

#android #tabactivity

#Android #tabactivity

Вопрос:

У меня есть TabActivity, который показывает другие действия в качестве содержимого, в зависимости от того, какая вкладка выбрана. Что я хочу сделать, так это из «родительского» действия попытаться зафиксировать нажатие обратной клавиши, но ни onKeyDown (), ни onBackPressed () никогда не вызываются в родительском… это обрабатывается «дочерними» действиями. Есть ли какой-либо способ передать его в «родительское» действие?

Ответ №1:

Почему бы просто не использовать из дочернего действия:

 @Override
public void onBackPressed () {
    this.getParent().onBackPressed();
}
  

Комментарии:

1. Мне не нравится вызывать его от каждого дочернего элемента, но это работает нормально. Спасибо.

Ответ №2:

Вы могли бы настроить процедуру связи между TabActivity и его дочерними элементами.

Я создал статический обработчик в TabActivity, который был инициализирован при onCreate TabActivity.

Затем я создал статический метод getHandler() (в TabActivity ).

Теперь фрагмент для ответа на ваш вопрос для ваших дочерних элементов будет:

 @Override
public void onBackPressed () {
    MyTabActivity.getHandler().sendEmptyMessage(MyTabActivity.BACK_PRESSED);
}
  

Комментарии:

1. решение @ShadowCloud также подходит.

Ответ №3:

Я также столкнулся с той же проблемой. Я сделал это таким образом:

 @Override
public boolean dispatchKeyEvent(KeyEvent event)
{
    if (event.getKeyCode() == KeyEvent.KEYCODE_BACK)
    {
        //things u want to do when back key pressed
    }    
    return super.dispatchKeyEvent(event);
}