OnSaveInstanceState () non appelé: pourquoi?

Problème:

J'ajoute un fragment à un LinearLayout, par programme. Il apparaît dans mon activité, génial. Je tourne l'appareil -> modifications de configuration: tout est détruit pour être recréé. Mais, avant que onDestroy () soit appelé, onSaveInstanceState () devrait être appelé. C'est le cas pour l'activité parentale, mais pas pour le fragment que j'ai ajouté. Pourquoi ?

  • CardView dans RecyclerView: animation tout en occupant
  • Taille d'image d'arrière-plan Android pour XXHDPI
  • La division de l'Android avec de l'espace ne fonctionne pas pour cette affaire. Pourquoi?
  • Comment puis-je Zip et Décompressez une chaîne en utilisant GZIPOutputStream qui est compatible avec .Net?
  • Permet de verrouiller l'orientation Android comme paysage dans l'application?
  • La tâche Async ne fonctionne pas correctement (DoInBackground ne s'exécute pas) lorsque le service s'exécute en arrière plan, Android
  • Code:

    Le XML:

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@id/parent_LL" android:stuff="myStuff" > <LinearLayout android:id="@id/categories_activity_LL1" android:stuff="myStuff" /> <LinearLayout android:id="@id/categories_activity_LL2" android:stuff="myStuff" /> </LinearLayout> 

    J'ajoute le fragment à l'interface utilisateur dans l'activité parentale:

     ft.add(container1, categories, CatFragIds.CATEGORIES.toString()).commit(); 

    J'ai remplacé onSaveInstanceState () de mon fragment:

     @Override public void onSaveInstanceState(Bundle outState) { // Récupère extensible boolean extensible = ((CategoryAppsListView) this.getListView()) .isExtensible(); mState.setExtensible(extensible); // Transmet l'état de CategoriesListElems FragmentManager fm = getFragmentManager(); @SuppressWarnings("unchecked") FragRetainObject<CategoriesListElemsState> retainedState = (FragRetainObject<CategoriesListElemsState>) fm.findFragmentByTag(CATEGORIESLISTELEMS_STATE+"_"+this.getTag()); if( retainedState == null) { retainedState = FragRetainObject.<CategoriesListElemsState>newInstance(mState); fm.beginTransaction() .add(retainedState, CATEGORIESLISTELEMS_STATE+"_"+this.getTag()).commit(); } else retainedState.setRetainObj(mState); super.onSaveInstanceState(outState); } 

    Merci pour votre temps!! 🙂

    2 Solutions collect form web for “OnSaveInstanceState () non appelé: pourquoi?”

    J'ai eu le même problème. Il existe deux réponses possibles:

    1. Ajouter un fragment dans le fichier xml, comme "fragment android: name =" faragmentClass "etc."
    2. Appelez la méthode OnaveStateInstanceState de manière manuelle. Et dans la méthode onCreate, restaurer l'état du fragment manuellement, lorsque vous l'ajoutez.

    Vous devez mettre le changement de configuration comme orientation et clavier dans AndroidManifest.xml

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.