Intent.FLAG_ACTIVITY_CLEAR_TOP ne supprime pas la pile d'activités
Je suis le développement de l'application dans laquelle je veux fermer toute application sur clic du bouton. Je sais android, et nous ne devrions pas penser à fermer l'application, car android n'est qu'automatiquement à partir de cette Est fermeture d'une application mal vu?. mais pourtant, je veux fermer mon application.
Donc ce que je fais pour fermer l'application est que je suis en utilisant Intent.FLAG_ACTIVITY_CLEAR_TOP
drapeau à supprimer l'activité de la pile.
Intent intent = new Intent(Activity3.this, FinishActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
Et dans le onCreate de FinishActivity.class
je fais appel this.finish()
mais l'application n'est pas fermé et précédent l'activité est rouvert.
FinishActivity.class
@Override
protected void onCreate(Bundle savedInstanceState) {
//TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.finish();
}
Mise à jour :
Voici le scénario
MainActivity->Activity2->Activity3->FinishActivity
Ici Activity2
est est ouvert après la fin de l'activité.
Comment puis-je y parvenir? Toute idée et suggestions seront appréciées.
Merci & en ce qui Concerne
source d'informationauteur juned
Vous devez vous connecter pour publier un commentaire.
Utiliser ce--
Édité--Nouvelle Réponse et perfectelly..
juste prendre un exemple...le faire en conséquence de ce que vos besoins du projet--
Je prends trois Activité de classe A, B et C..et j'ai appliqué le bouton de fermeture sur le point de vue de classe C Activité..Si vous voulez, puis par bouton de Retour, vous pouvez aller de l'Activité précédente et quand vous appuyez sur le bouton fermer ensuite, vous quittez les applications..jetez un oeil--
}
Prendre la prochaine activité de la classe--
}
Prendre la dernière activité--
}
Espérons que cela permettrait de résoudre votre problème..cheers!
Donner à ceci un essai. Cela devrait claire de votre activité pile.
Ce finalement fonctionné pour moi à 100% du temps. J'ai essayé tous les drapeaux autonome, n'a jamais fonctionné pour toutes les instances du code. Utilisé tous les drapeaux partout, je veux cette fonctionnalité, environ 5 endroits différents, et il fonctionne maintenant.
À partir de la documentation pour
Intent.FLAG_ACTIVITY_CLEAR_TOP
Donc, pour le faire travailler votre
FinishActivity
doivent d'abord être un dans votre Activité de la pile. Dans tous les autres cas, cette solution ne serait pas vous donner quoi que ce soit.Vous devez effectuer plusieurs étapes pour effectuer cette:
1) Faire
FinishActivity
que votre lanceur activité.2) Ne fournissent pas une vue de dessus et de commencer d'abord
Activity
de votre application directement à partir deonCreate
rappel :3) Redéfinir les
onRestart
rappel:Exemple de Code:
Je suppose que c'est tout ce dont vous avez besoin. Bonne chance!
setFlags(Intention.FLAG_ACTIVITY_NEW_TASK| Intention.FLAG_ACTIVITY_CLEAR_TOP);
autre que celle définie launchMode "singleTop" dans FinishActivity définition xml,
remplacer onNewIntent méthode , vous pouvez transmettre des renseignements supplémentaires dans le cadre d'intention , investies de la finition de votre activité dans le onCreate de le terminer en onNewIntent méthode de l'activité en fonction du signal à partir de l'appelant activité ou tout simplement terminer en fonction de votre besoin .
Il peut-être possible de vos autres activités ont différentes lauchmodes c'est pourquoi ils ne sont pas de la finition .
Cela a fonctionné pour moi:
Essayer Comme ça c'est un travail pour moi:
à la place de votre code
Essayez ceci:
Comme d'autres réponses sont les suivantes devrait fonctionner.
Pour l'API de niveau < 11,
Intent.FLAG_ACTIVITY_CLEAR_TASK
n'est pas disponible. Au lieu de cela j'ai utiliséIntentCompat.FLAG_ACTIVITY_CLEAR_TASK
de soutien de la bibliothèque.Voir IntentCompat
Peut aider quelqu'un d'achoppement à travers.