SavedInstanceState siempre es nulo en fragmento

Tengo un fragmento adjunto a la actividad usando XML (y setContentView () en actividad). A tienen un problema porque tengo vistas muy dinámicas en mi fragmento, así que cuando los cambios de orientación debo restaurar todos los estados de las opiniones.

Tengo problema porque estoy usando algo como eso:

public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putBoolean("restore", true); outState.putInt("nAndroids", 2); } 

Pero después de cambiar la orientación cuando se llaman métodos con param Bundle savedInstanceState (como onCreateView etc) mi savedInstanceState siempre es nulo.

No soy un noob en el Android, pero ahora estoy muy enojado debido a este problema …

 public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); if (savedInstanceState == null) { //smth } else { // smthelse THIS IS NEVER REACHED BECAUSE BUNDLE IS ALWAYS NULL } getListView().setDivider(getResources().getDrawable(R.drawable.list_divider)); } 

Todo el problema fue que no declaro android: id para el fragmento en XML. Android necesita ID o TAG para reconocer el fragmento almacenado y reproducir todos los elementos en él. Así que chicos, recuerden – cada instancia de fragmento necesita identificador único o etiqueta!

Además, cuando se declara setRetainInstance (true), entonces bundle siempre debe devolver null.

Tuve un problema similar en el que siempre estaba consiguiendo savedInstanceState como null a pesar de suministrar el paquete al Fragmento.

La única solución que funcionó para mí fue hacer

 myFragment.setArguments(bundle) 

Con mi paquete de la actividad y hacer un

 Bundle bundle = this.getArguments(); 

In onCreateView del fragmento.

Espero que esto ayude a alguien más.

Para Fragmento: –

 use this for save state of fragment on orientation. onCreate(Bundle save) { super.onCreate(save); setRetainInstance(true); } 

Vea este tutorial: – http://techbandhu.wordpress.com/2013/07/02/android-headless-fragment/

Para Actividad: –

Cuando inicie su aplicación, en onCreate , su objeto de paquete es nulo, por lo que tiene que poner un cheque como a continuación y cuando gire la pantalla a continuación, onSaveInstance se llama y se inicializa el objeto de paquete

  @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_game); if (savedInstanceState != null) { boolean t = outState.getBoolean("restore"); int s = outState.getInt("nAndroids"); } } 

Ok, sé que este es un viejo post, pero no pude encontrar la respuesta correcta para mí aquí ni muchos otros lugares, así que estoy publicando cómo arreglé mi caso.

Así que mi fragmento está dentro de una actividad. Y en un principio intenté guardar Bundle sólo en Fragment y recuperarlo en onCreateView. Sin embargo, ese fue el problema.

Fijé esto iniciando el objeto del myFragment en actividad y poner ese objeto al paquete de la actividad en onSaveInstanceState (). Luego lo recuperó en onRestoreInstanceState (). Utilicé getSupportFragmentManager (). PutFragment / getFragment. Entonces el saveInstanceState en el fragmento ya no es nulo.

Primero debe poner sus datos, luego llamar a super.onSaveInstanceState(outState);

 public void onSaveInstanceState(Bundle outState) { outState.putBoolean("restore", true); outState.putInt("nAndroids", 2); super.onSaveInstanceState(outState); } 

Y asegúrese de que la actividad no nohistory propiedades de nohistory en AndroidManifest.xml o nohistory en false .

  <activity android:noHistory="false"> 
  • Ordenación de una parcela de notificación
  • "El archivo del paquete no es válido", la solución desde el lado del desarrollador (Android)
  • Android VpnService para capturar paquetes no captura paquetes
  • Cómo verificar correctamente el permiso de Android dinámicamente
  • Pase la clase personalizada al fragmento
  • Imprimir el contenido de un paquete a Logcat?
  • android preferencias compartidas y paquete comparado con preferencias compartidas
  • Cómo agregar el "Pack de iconos de la barra de acciones" a Android Studio
  • Beneficio de usar Parcelable en lugar de serializar objetos
  • Android, Icon Pack de plantillas, ¿dónde están los iconos?
  • Java.lang.NullPointerException en el paquete extras = data.getExtras ();
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.