TabActivities中的关键事件?

时间:2010-05-08 23:33:07

标签: android keyevent

我有一个TabActivity,想要捕捉和处理HOME和BACK的按下。我需要在哪里捕捉这些事件?

在我的TabActivity的子类中,我实现了以下内容:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    switch (keyCode) {
        // Code handling
    }

    return super.onKeyDown(keyCode, event);
}

没用。

所以我在switch语句行上放置了一个断点。但无论是按音量增大/减小,菜单,家庭还是返回,都会调用此功能从不。我需要在哪里捕获这些KeyEvent?

5 个答案:

答案 0 :(得分:29)

事实证明这很简单。将以下代码添加到子选项卡活动:

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

然后在TabActivity中执行真正的逻辑:

 @Override
  public void onBackPressed() {
    // Called by children
  }

否则,孩子们将在不通知标签主持人的情况下拦截和使用该事件。

答案 1 :(得分:5)

我有同样的问题,发现重写dispatchKeyEvent有效。

此处可以找到后退按钮按下的示例:

http://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html

答案 2 :(得分:2)

每个标签的活动处理“后退”按下。

答案 3 :(得分:0)

  

我有一个TabActivity并想抓住   并处理HOME和BACK的按键。   我需要在哪里捕捉这些事件?

你永远不能“处理家庭的压力”。

关于BACK,您可以使用onKeyDown()(适用于Android 1.x)或onBackPressed()(适用于Android 2.x)。但是,您的TabActivity可能为时已晚。例如,如果您将活动作为选项卡的内容,则可能是其中一个正在捕获BACK按下并安排正常处理(即,关闭活动)。由于我避免像瘟疫这样的标签活动(除了一本书的例子),我还没有在那个场景中尝试过BACK按钮处理。

答案 4 :(得分:0)

oncreate()

中尝试此操作
setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL);
setDefaultKeyMode(DEFAULT_KEYS_SEARCH_GLOBAL);