Pourquoi FLAG_ACTIVITY_CLEAR_TOP ne fonctionne-t-il pas?
Comme le titre le dit, Pourquoi intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
ou intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
ne fonctionne pas?
J'ai 3 Activités disons A, B et C.
Quand je suis en train de lancer Une Activité de C avec code:
Intent i = new Intent(this, A.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
Il commence simplement Une Activité mais ne vide pas le top.! -_-
J'ai aussi essayé d'utiliser setFlags()
.
J'ai lu différentes questions sur ce sujet de problème, mais je ne pouvais pas trouver la bonne réponse. >_<
Quelqu'un s'il vous plaît aider!
Modifier
Code pour onBackPressed() de l'activité " A " comme demandé par @codeMagic.
@Override
public void onBackPressed(){
if(wvLogin.canGoBack())
wvLogin.goBack();
else
super.onBackPressed();
}
source d'informationauteur ashu
Vous devez vous connecter pour publier un commentaire.
À partir de la documentation pour FLAG_ACTIVITY_CLEAR_TOP:
Que vous avez ajouté dans votre commentaire, l'activité a été terminé avant l'appel de B, de sorte que cette situation ne s'applique pas. Une nouvelle instance de l'activité sera lancé à la place.
Comme je le vois, vous avez deux options ici:
1) Utiliser le
Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK
drapeaux. Cela va démarrer Une activité comme la racine de la pile. Il fonctionne, mais toutes les autres activités dans la pile sera perdu. En supposant Un a été la première activité (ou au moins, que vous n'êtes pas intéressés dans toutes les activités antérieures dans la tâche de la pile), alors il n'a pas d'importance. Remarque: CLEAR_TASK exige de l'API de Niveau 11.2) une Autre solution possible (dans le cas de la précédente hypothèse n'est pas vrai) serait de ne pas utiliser l'intention des drapeaux à tous:
startActivityForResult()
.B.afterActivityResult()
finition B et lancement A.Vous avez utilisé un diferrent intention: utilisez celui que vous avez initialisé:
solution:
Vous pouvez soit mettre un noHistory fidèle à l'Activité dans le manifeste
Il vous manque de l'
Intent.FLAG_ACTIVITY_SINGLE_TOP
drapeauEssayez ceci: