J'ai 2 activités: principale et liste.
Depuis Main, vous pouvez ouvrir la liste; à partir de la liste, vous pouvez ouvrir Main.
Je voudrais que chaque ouverture de List ne soit pas enregistrée dans «l'histoire». Ainsi, le fait d'appuyer en arrière depuis Main ne peut pas revenir à la liste.
C'est possible?
android
back-stack
realtebo
la source
la source
finish()
immédiatement aprèsstartActivity(...)
. De cette façon, si l'utilisateur appuie sur RETOUR depuis «principal», il n'y aura rien vers lequel revenir.Réponses:
Lorsque vous démarrez votre liste
Activity
, définissez sesIntent
indicateurs comme ceci:Le
FLAG_ACTIVITY_NO_HISTORY
drapeau empêche l'Activity
ajout du nouveau à la pile d'historique.NB: comme le souligne @Sam, vous pouvez utiliser à la
i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
place. Il n'y a pas de différence fonctionnelle.la source
Intent
drapeau qui déclare "ne fait qu'ajouter à l'histoire s'il ne revient pas à l'Activity
origine".setFlags()
augetFlags()
lieu deIntent.addFlags()
?Dans le fichier manifeste, ajoutez:
à l'activité que vous ne souhaitez pas conserver sur la pile.
la source
Utilisez la nouvelle tâche avec la compensation. Cela a fonctionné dans mon cas lorsque les autres options n'ont pas fonctionné.
Effacez toute la pile d'historique et démarrez une nouvelle activité sur Android
la source
Il semble que si vous appelez finish () sur votre activité juste après en avoir ouvert une autre, celle qui est terminée est supprimée de la pile.
par exemple:
la source
Dans mon cas particulier, cela
FLAG_ACTIVITY_NO_HISTORY
n'a pas fonctionné. Ni l'un ni l'autre n'ont fonctionnéFLAG_ACTIVITY_NEW_TASK
ouFLAG_ACTIVITY_CLEAR_TASK
seuls.Cependant
FLAG_ACTIVITY_NEW_TASK
etFLAG_ACTIVITY_CLEAR_TASK
ensemble a fonctionné.la source
Je voulais juste ajouter un moyen de le faire à Kotlin:
la source
Intent(this, MainActivity::class.java).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) }.also { startActivity(it) }
Réponse tardive, mais ajoute une certaine profondeur à d'autres réponses. Tout se résume à ce que vous voulez qu'il se passe avec les autres activités lancées à partir de cette activité
Option 1 - Cette seule activité ne devrait pas avoir d'historique d'activité d'appel
Alors faites simplement:
Option 2 - Toutes les activités commencées à partir de cette activité spécifique ne devraient pas avoir d'historique
Ajoutez ensuite le manifeste de l'activité appelante:
Mais si vous souhaitez avoir un historique dans une nouvelle activité, vous devez supprimer manuellement l'indicateur:
J'espère que cela clarifie d'autres réponses :)
la source
Essayez FLAG_ACTIVITY_CLEAR_TOP si l'activité est déjà en cours d'exécution:
la source
ajoutez le drapeau
FLAG_ACTIVITY_NEW_TASK
à votreIntent
http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_NEW_TASK
la source
Ne pouvez-vous pas remplacer le bouton de retour sur l'activité particulière pour arrêter la fonctionnalité de «retour»?
la source
Activity
n'est pas une bonne pratique.OnBackPressed
pour ça.