Je développe une application qui contient TabHost
, dans un de ces onglets j'ai un ActivityGroup
, et de ce ActivityGroup
, je lance un autre SubActivity
(disons que je lance un Activity
A) et jusqu'à ce que tout soit OK.Naviguer entre les activités dans un ActivityGroup
Le problème est quand je presse la BackButton, le CurrentActivity (Activity
A) est détruit, mais le ParentActivity (Le ActivityGroup
) ne reprend pas, et le spectacle app juste une fenêtre nulle avec le titre de My App ("Mon titre d'application").
Le code pour lancer le Activity
A de mon ActivityGroup
est:
View view = getLocalActivityManager().startActivity(id,newIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)) .getDecorView();
this.setContentView(view);
et j'ai overrided
la méthode onKeyDown
comme ça dans mon 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);
}
mais il semble que la méthode onKeyDown
n'est jamais appelé parce que ai n'a pas affiché le journal "onKeyDown".
et l'affichage logcat ceci:
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
ce que je veux est d'afficher l'ActivityGroup
quand mon Activity
A est détruit.
NB: mon niveau d'application est 4: * Android 1.6 *, donc je ne peux pasoverride
la méthodeonBackPressed()
Merci à tous pour votre aide
----------------------------------- EDIT ------------- ---------------------------
J'ai ajouté le code de mon onKeyDown
comme celui-ci sur mon Activity
A:
@Override de onKeyDown public boolean (int keyCode, événement 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);
}
Et dans mon ParentActivity
, j'ai :
@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);
}
J'ai obtenu le même résultat, la Activity
A est arrêté, mais il me donne encore la fenêtre nulle avec e titre e de mon application, et il ne montre pas mon ActivityGroup
(ParentActivity
)
je vais essayer, merci pour votre réponse :) – Houcine
s'il vous plaît voir mon modifier, je l'ai fait ce que vous me dit et j'obtenu le même résultat, pouvez-vous s'il vous plaît fournir quelques de votre code dont vous avez parlé merci – Houcine
Oui, donnez-moi quelques heures pour l'attraper. (Je suis au travail et l'application que je l'ai utilisé est à la maison) ... –