3

我有一个TabActivity,它根据选择的选项卡将其他活动显示为内容。我想要做的是从“父”活动尝试捕获后退按键,但是onKeyDown()onBackPressed()都不会在父项中被调用......它正在由“子”活动处理。有没有办法让它传递给“父”活动?

4

3 回答 3

7

为什么不直接在子活动中使用:

@Override
public void onBackPressed () {
    this.getParent().onBackPressed();
}
于 2011-05-16T15:11:06.460 回答
2

我也遇到了同样的问题。我是这样解决的:

@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);
}
于 2011-12-08T08:14:37.150 回答
2

您可以在 TabActivity 和他的孩子之间建立一个通信过程。

我在 TabActivity 中创建了一个静态处理程序,该处理程序在 TabActivity 的 onCreate 中初始化。

然后我创建了一个静态 getHandler() 方法(在 TabActivity 中)。

现在,为您的孩子解决问题的片段将是:

@Override
public void onBackPressed () {
    MyTabActivity.getHandler().sendEmptyMessage(MyTabActivity.BACK_PRESSED);
}
于 2011-05-16T15:05:22.453 回答