La nouvelle commitNow() ajout de la méthode d'Android N et le soutien de la bibliothèque de la version 24 a une limite et un peu déroutant de la documentation.
Commet cette opération de manière synchrone. Tout ajout de fragments seront initialisé et porté complètement à l'état de leur cycle de vie animateur et retiré des fragments va être démoli en conséquence avant cet appel retourne. De valider une transaction de cette façon permet fragments d'ajouter, comme dédié, encapsulé composants surveiller le cycle de vie de l'état de leur hôte, tout en fournissant plus ferme des garanties de classement autour de quand ces fragments sont entièrement initialisé et de prêt. Les Fragments de gérer les affichages des vues créées et ci-joint.
L'appel de commitNow est préférable d'appeler commit() suivi par FragmentManager.executePendingTransactions() aura pour effet de bord de la tentative de perpétration de tous actuellement les transactions en attente de savoir si c'est le comportement souhaité ou non.
Les Transactions validées dans cette façon ne peut pas être ajouté à la FragmentManager de la pile de retour, afin d'éviter de casser les autres des garanties de classement pour les autres de manière asynchrone les transactions validées. Cette méthode permettra de jeter l'exception IllegalStateException si la transaction précédemment demandé à être ajouté à la pile de retour avec addToBackStack(Chaîne de caractères).
Une transaction ne peut être commis avec ce méthode avant son contenant de l'activité de l'économie de son état. Si l' la validation est tenté, après ce point, une exception sera levée. C'est parce que l'etat après la validation peut être perdue si l'activité doit être restauré à partir de son état. Voir commitAllowingStateLoss() pour des situations où il peut être bon de perdre le commettre.
J'ai mis en gras la partie qui, je pense, il est source de confusion.
Donc, mes principales préoccupations/questions sont les suivantes:
1 - Ils ne PEUVENT PAS être ajoutés? Il dit que je vais avoir une IllegalStateException, de sorte qu'il sera ou ne sera pas ajouté?
2 - j'accepte le fait que je ne peut pas l'utiliser si nous voulons ajouter un fragment de la backstack. Ce qu'il ne dit pas, c'est que vous bénéficiez de cette exception:
java.lang.IllegalStateException: This transaction is already being added to the back stack
!!!!????
Donc je ne peux pas appeler addToBackStack(String)
moi-même, car il est à l'intérieur de l'appeler pour moi? Je suis désolé, mais... quoi? pourquoi? que faire si je ne veux pas qu'il soit ajouté dans la backstack? Et si j'essaie d'utiliser ce fragment de la backstack plus tard, mais parce qu'il ne PEUT PAS être ajouté, plus tard, il n'est pas là?
Il semble que ce est quelque chose de prévu si j'ai été en utilisant commitAllowingStateLoss()
, mais je vois que commitNowAllowingStateLoss()
existe aussi, donc... ce genre de logique-t-il?
TL;DR
Comment est commitNow() de travail à l'interne concernant la backstack?