Pourquoi FLAG_ACTIVITY_CLEAR_TOP ne marche pas?

Comme indiqué dans le nom, pourquoi
intent.addFlags/Intent.FLAG_ACTIVITY_CLEAR_TOP/

ou
intent.setFlags/Intent.FLAG_ACTIVITY_CLEAR_TOP/

Ne fonctionnera pas?

j'ai 3 type d'activité, disons A, B et C.

Quand j'essaie d'exécuter une action A de C Avec code:


Intent i = new Intent/this, A.class/;
i.addFlags/Intent.FLAG_ACTIVITY_CLEAR_TOP/;
startActivity/i/;


Il commence juste l'action A, mais ne nettoie pas le sommet.! -_-

J'ai aussi essayé d'utiliser
setFlags//

.

J'ai lu diverses questions sur SO À propos de ce problème, mais n'a pas pu trouver la bonne réponse. >_<

Toute personne, s'il vous plaît aider!

Éditer

Code onBackPressed// En action 'A' sur demande @codeMagic.


@Override
public void onBackPressed//{
if/wvLogin.canGoBack///
wvLogin.goBack//;
else
super.onBackPressed//;
}
Invité:

Frederic

Confirmation de:

De la documentation par
http://developer.android.com/r ... R_TOP
:

Siéger

et l'action de départ a déjà été lancée dans
La tâche actuelle

, Puis au lieu de lancer une nouvelle copie de cette
Actions toutes les autres actions sur le dessus seront fermées et
Cette intention sera livrée à /Maintenant d'en haut/ Ancienne action comme
nouvelle intention.

Comment avez-vous ajouté vos commentaires, action A a été complété avant d'appeler B, Par conséquent, cette situation n'est pas applicable. Au lieu de cela, une nouvelle instance doit être lancée.

Comme je le vois, vous avez deux options ici:

1/ Utiliser des drapeaux
Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK

. Cela conduira au lancement de l'action et comme la racine de la pile. Cela fonctionne, mais toutes les autres étapes de la pile seront perdues. En supposant que mais était la première action /Ou du moins que vous n'êtes pas intéressé par aucune étape précédente dans la pile de tâches/, Cela n'a pas d'importance.

Noter: CLEAR_TASK a besoin API Niveau 11.

2/ Une autre solution possible /Si l'hypothèse précédente est incorrecte/ Il ne serait pas d'utiliser des drapeaux d'intentions du tout:

B commence C de
startActivityForResult//

.

Au lieu de contester A, C complète le travail en définissant le résultat pour B, indiquant que A Doit être lancé.

DANS
B.afterActivityResult//

fin d'année B Et lancement A.

Cyprien

Confirmation de:

Vous manquez de drapeau
Intent.FLAG_ACTIVITY_SINGLE_TOP


Essayez-le:


Intent i = new Intent/this, A.class/;
i.addFlags/Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP/;
startActivity/i/;

Fabrice

Confirmation de:

Vous avez utilisé une autre intention: utilisez celui que vous avez initialisé:


Intent i = new Intent/this, A.class/;
intent.addFlags/Intent.FLAG_ACTIVITY_CLEAR_TOP/; \\WRONG;;
startActivity/i/;


décision

:


i.addFlags/Intent.FLAG_ACTIVITY_CLEAR_TOP/; \\RIGHT;;


Vous pouvez soit mettre noHistory Activité loyale dans Manifeste


android:noHistory=true

Pour répondre aux questions, connectez-vous ou registre