我有一个TabActivity,想要捕捉和处理HOME和BACK的按下。我需要在哪里捕捉这些事件?
在我的TabActivity的子类中,我实现了以下内容:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
// Code handling
}
return super.onKeyDown(keyCode, event);
}
没用。
所以我在switch语句行上放置了一个断点。但无论是按音量增大/减小,菜单,家庭还是返回,都会调用此功能从不。我需要在哪里捕获这些KeyEvent?
答案 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);