我正在开发包含TabHost
一个应用程序,在这些标签我有一个ActivityGroup
之一,从这个ActivityGroup
,我发动另一SubActivity
(让我们说,我启动了Activity
A),以及直到这一切都好。导航在的ActivityGroup活动之间
问题是,当我按下后退按钮,则CurrentActivity(Activity
A)被破坏,但ParentActivity(该ActivityGroup
)不恢复,以及应用程序展示只是一个空窗与我的应用程序的标题( “我的应用标题”)。
从我ActivityGroup
启动Activity
A中的代码是:
View view = getLocalActivityManager().startActivity(id,newIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)) .getDecorView();
this.setContentView(view);
和我在ActivityGroup
有overrided
方法onKeyDown
这样的:
@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被破坏。
NB:我的应用水平是4: * 的Android 1.6 *,所以我不能override
方法onBackPressed()
谢谢大家的帮助
-----------------------------------编辑------------- ---------------------------
我已经加入我的onKeyDown
这样的代码我Activity
答:
@覆盖 公共布尔的onkeydown(INT的keyCode,KeyEvent的事件){
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
)
我会尝试这个,感谢您的回复:) – Houcine 2012-01-05 12:39:45
请看到我的编辑,我做了什么,你告诉我,我得到了相同的结果,能否请您提供一些你提到的代码有哪些?谢谢 – Houcine 2012-01-05 12:51:43
是的,给我几个小时来抓住它。 (我在工作,我使用它的应用程序是在家里)... – 2012-01-05 13:20:28