J'ai une activité à bord et une activité de connexion. Dans LoginActivity après une connexion réussie, j'essaie d'effacer l'activité à bord en utilisant le code ci-dessous:
startActivity(new Intent(context, HomeActivity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_CLEAR_TASK));
J'ai même essayé Intent.FLAG_ACTIVITY_NO_HISTORY
mais cela ne fonctionne pas non plus. Alors que dois-je faire?
4 Réponses :
Essayez le code ci-dessous:
Intent intent = new Intent(context, HomeActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(intent);
Je dirais d'aller avec finishAffinity ()
avant de passer à l'activité à bord. Il n'est pas nécessaire de définir des indicateurs. Parce que cette méthode tue toutes les activités de la pile et l'activité en cours également
Il n'est pas nécessaire d'utiliser des FLAGS. Même si vous voulez comprendre, vérifiez ceci
Il existe deux façons de terminer l'activité en cours (LoginActivity dans votre cas) et de passer à l'activité suivante (à bord dans votre cas):
finish ()
avant de démarrer la deuxième activité. Cela détruira l'activité actuelle. finishAffinity ();
avant de démarrer la deuxième activité. Cela détruira la pile de toutes les activités précédentes. J'espère que cela vous aidera.
Je suppose que l'application commence par OnboardActivity
et qu'elle démarre LoginActivity
et que vous souhaitez ensuite les effacer tous les deux et lancer HomeActivity
? < / p>
Si tel est le cas, je le ferais de cette façon:
OnboardActivity
lance LoginActivity
en utilisant startActivityForResult ()
. LoginActivity
renvoie un résultat qui indique si la connexion a réussi ou non et appelle finish ()
. LoginActivity
n'est plus dans la tâche. OnboardActivity
vérifie le résultat dans OnActivityResult ()
et, si la connexion a réussi, lance HomeActivity
(aucun indicateur nécessaire) et appelle < code> finish () sur lui-même. LoginActivity
et OnboardActivity
ont disparu, et HomeActivity
est la seule activité
tâche.