Approfondir la compréhension setRetainInstance(vrai)

Ce exactement se produit lorsque vous appelez setRetainInstance(true) sur un Fragment? La documentation est quasi inexistante et cela semble être une fonction très importante. Plus précisément, je voudrais savoir comment une grande partie de cette séquence (que j'ai fait) est vrai:

  1. L'utilisateur fait pivoter l'appareil.
  2. Le fragment détaché de la Activity et Fragment.onDetach() est appelé.
  3. L'activité est détruite; Activity.onDestroy() est appelé.
  4. La Activity objet java est supprimé (lorsque cela est possible, par le GC).
  5. Une nouvelle Activity objet java est créé; son constructeur, et onCreate() sont appelés.
  6. Dans Activity.onCreate() nous avons setContentView(...) qui définit un modèle contenant un fragment, ou nous utilisons FragmentTransaction
    pour ajouter un fragment.
  7. Je ne suis vraiment pas sûr à ce sujet, mais je suppose que android est assez intelligent pour trouver la vieille fragment, et l'appel Fragment.onAttach() à
    le rattacher à la nouvelle Activity
  8. Prochaine (ou avant? qui sait?) Activity.onResume() est appelé.

Donc, est-ce correct? Est Android assez intelligent pour trouver la vieille fragment, même si je utiliser explicitement FragmentTransaction.add(new MyFragment(), ...) la première fois? Et si oui, comment puis-je éviter d'ajouter un autre fragment dans onCreate()? Ai-je besoin de faire quelque chose comme ça?:

    if (getSupportFragmentManager().findFragmentByTag("foo") == null)
    {
        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
        ft.add(new FooFragment(), "foo").commit();
    }
InformationsquelleAutor Timmmm | 2012-09-28