我正在开发一个应用程序,其中包含TabHost
在其中一个选项卡中我有一个ActivityGroup
,然后ActivityGroup
我启动另一个SubActivity
(假设我启动一个Activity
A),直到这个,一切正常。
问题是当我按下BackButton时,CurrentActivity( Activity
A) 被破坏,但 ParentActivity(The ActivityGroup
) 没有恢复,并且应用程序只显示一个带有我的应用程序标题的空窗口(“我的应用程序标题”)。
Activity
从我启动 A 的代码ActivityGroup
是:
View view = getLocalActivityManager().startActivity(id,newIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)) .getDecorView();
this.setContentView(view);
我有这样的overrided
方法:onKeyDown
ActivityGroup
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
Log.i(TAG, "onKeyDown");
if(keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0){
Activity current = getLocalActivityManager().getCurrentActivity();
Log.i(TAG, current.getIntent().getStringExtra("id"));
current.finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
但似乎onKeyDown
从未调用过该方法,因为 ai 没有显示日志“onKeyDown”。
logcat 显示如下:
01-05 11:04:38.012: W/KeyCharacterMap(401): No keyboard for id 0
01-05 11:04:38.012: W/KeyCharacterMap(401): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
我想要的是显示ActivityGroup
我Activity
的 A 被摧毁的时间。
注意:我的应用程序级别是 4: * Android 1.6 *,所以我无法 override
使用该方法 onBackPressed()
感谢大家的帮助
- - - - - - - - - - - - - - - - - -编辑 - - - - - - - --------------------------
我onKeyDown
在我Activity
的 A 上添加了这样的代码:
@Override public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0){
ParentActivity parentActivity = (ParentActivity) this.getParent();
parentActivity.onKeyDown(keyCode, event);
return true;
}
return super.onKeyDown(keyCode, event);
}
而在我的ParentActivity
,我有:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0){
Log.i(TAG, "onKeyDown");
int len = idOfSubActivities.size();
String idOfCurrentActivity = idOfSubActivities.get(len-1);
Activity currentActivity = getLocalActivityManager().getActivity(idOfCurrentActivity);
currentActivity.finish();
idOfSubActivities.remove(len - 1);
return true;
}
return super.onKeyDown(keyCode, event);
}
我得到了同样的结果,Activity
A被停止了,但它仍然给我一个带有我的应用程序标题的空窗口,并且它不显示我的ActivityGroup
(ParentActivity
)