TabHost
私が持っているタブの1つに、を含むアプリを開発しています。このタブActivityGroup
から、ActivityGroup
別のタブSubActivity
を起動します(Aを起動するとしましょうActivity
)。これまで、すべて問題ありません。
問題は、BackButton を押すと、CurrentActivity( Activity
A) が破棄されますが、ParentActivity(The ActivityGroup
) は再開されず、アプリは My App のタイトル (「My Application Title」) を持つ null ウィンドウのみを表示します。
Activity
my から 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
私が欲しいのは、私のAが破壊されたActivityGroup
ときに表示することです。Activity
NB:私のアプリレベルは4です: * Android 1.6 *なので override
、メソッドはできません onBackPressed()
ご協力ありがとうございました
- - - - - - - - - - - - - - - - - -編集 - - - - - - - --------------------------
onKeyDown
私は私の A にこのようなコードを追加しましActivity
た:
@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);
}
同じ結果が得られ、 A は停止しましたが、アプリのタイトルが表示された null ウィンドウが表示され、 ( )Activity
が表示されません。ActivityGroup
ParentActivity