在父活动中使用onKeyDown或onBackPressed

3
我有一个 TabActivity,根据选定的选项卡显示其他 Activities 作为内容。我想做的是从“父”活动中尝试捕获返回键按下事件,但是无论是 onKeyDown() 还是 onBackPressed() 都没有在父级中被调用......它被“子”活动处理了。有没有办法将其传递到“父”活动?
3个回答

7

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

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

我不喜欢每次都要从每个子项中调用它,但这样也可以。谢谢。 - Jeremy Logan

2
您可以在TabActivity和它的子项之间设置通信程序。
我在TabActivity中创建了一个静态Handler,在TabActivity的onCreate中进行了初始化。
然后我创建了一个静态的getHandler()方法(在TabActivity中)。
现在,为了实现您对子项的问题,可以使用以下代码片段:
@Override
public void onBackPressed () {
    MyTabActivity.getHandler().sendEmptyMessage(MyTabActivity.BACK_PRESSED);
}

@ShadowCloud 的解决方案也很合适。 - Andrea Baccega

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);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接