1

J'écris actuellement une disposition de tiroir comme ma disposition principale, avec un FrameLayout intégré que j'utiliserai pour tenir chaque "page" quand un article sur le tiroir est cliqué dessus. Lorsque l'application démarre pour la première fois, un fragment initial s'affiche. D'autres fragments peuvent être ajoutés/remplacés plus tard, ce qui est correct, mais mon problème est que lorsque l'utilisateur clique sur le bouton de retour sur le tout premier "fragment initial", je ne veux pas que ce fragment particulier soit retiré de la mise en page. Actuellement, il est en train d'être supprimé et il affiche simplement une disposition de tiroir sans autre contenu (ce qui est logique). Je souhaite que l'application se ferme automatiquement si le fragment initial est le dernier et que le bouton Précédent est enfoncé, au lieu de supprimer ce fragment initial, puis après une autre pression, puis il se ferme.Empêche le dernier fragment d'être retiré du backstack

choses que j'ai pensé à faire:

  • Ne pas ajouter le premier fragment au backstack. (Si je fais cela, je peux le comparer avec le nom de classe du fragment qui est une chaîne un peu plus longue, ou je peux utiliser une valeur booléenne pour une fois que le premier fragment a été placé (et non ajouté au backstack), le booléen qui permet aux fragments à ajouter.
  • Redéfinition maintenant la fonction onBackPressed de l'activité

quelqu'un at-il un moyen suggéré de le faire ou peut penser à une meilleure façon? Merci

+0

Je suggérerais la première option c'est-à-dire, ne pas ajouter le fragment au backstack – Krish

+0

Je suggérerais de surcharger onBackPressed et de le faire seulement s'il y a des entrées dans la pile frsgment – EpicPandaForce

Répondre

2

la première balle le point sonne le plus propre.Vous n'avez pas d'autre besoin de gérer les conditions lorsque le dos est touché, correct? Si c'est le cas, il y a moins de lignes de code (en supprimant une par opposition à en ajouter plusieurs) et vous arrivez à Conserver les méthodes d'activité par défaut telles quelles.

Je sais que ce n'est pas exactement ce que vous avez demandé, mais je pense que le premier point est si propre, que je ne voudrais pas essayer autre chose.

+0

En fait, c'est ce que je demandais, et je pense est utile. Aller attendre pour accepter une réponse pour voir si quelque chose d'autre se présente. Merci – Michael

0

J'ai mis en application même dans une de l'application en utilisant mon propre fragment de pile. et également implémenté la méthode onBackPressed.

Chaque fois que l'utilisateur clique sur l'élément dans le tiroir, j'ajoute un fragment dans la pile et dans la presse arrière une fois sa longueur est 1 Je termine l'activité avec un message.

Lors d'un clic sur un objet - Ajouter/remplacer un fragment dans un conteneur. OnBackPressed - Pop fragments de la pile et une fois son dernier je finis l'activité.

Espérons que cela peut vous donner une autre option à considérer.