Я разрабатываю приложение, которое содержит TabHost
, на одной из этих вкладок у меня есть ActivityGroup
, и из этого ActivityGroup
я запускаю еще один SubActivity
(скажем, я запускаю Activity
А) и до этого все ок.
Проблема в том, что когда я нажимаю BackButton , CurrentActivity (Activity
A) уничтожается, но ParentActivity (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
никогда не вызывается, потому что я не получил журнал "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
A:
@ Override
public boolean 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
)