Uso de ViewPager caches Fragmentos después de la rotación de la pantalla?

Inicialmente crear mis fragmentos dentro de la actividad onCreate (). Que voy a crear el ViewPager y la configuración del adaptador. Mantengo una referencia global a los fragmentos para poder actualizarlos según sea necesario. Además, estos fragmentos son accedidos por el adaptador.

Mi problema es que me doy cuenta una vez que la pantalla se rota el Fragmentos se recrean, pero el ViewPager todavía contiene los fragmentos originales creados … ??

¿Cómo se supone que debo manejar el ciclo de vida de mi fragmento? Necesito poder llamar directamente al fragmento de la actividad. ¿Un singleton para un fragmento es una buena idea? ¿O sólo una pérdida de memoria?

protected void onCreate (Bundle savedInstanceState) { ... ... // set up cards mFrag1 = new Frag1(); mFrag1.setOnActionEventListener(mOnActionEvents); mFrag2 = new Frag2(); mFrag3 = new Frag3(); mFragPager = (ViewPager) findViewById(R.id.vpPager); mFragAdapter = new FragAdapter(getSupportFragmentManager()); mFragPager.setAdapter(mCardAdapter); mFragPager.setOnPageChangeListener(mOnCardChange); } 

Las instancias globales y los fragmentos estáticos son definitivamente una mala idea. A menos que llame a setRetainInstance() en un fragmento, se serializará a un Bundle y se recreará cuando se vuelva a crear la actividad principal (en la pantalla se gira, etc.). Eso, por supuesto, producirá nuevas instancias de fragmentos, y sus referencias viejas serán inválidas. Usted debe obtener referencias a los fragmentos a través de FragmentManager.findFragmentById/Tag() según sea necesario y definitivamente no almacenar en las variables estáticas.

Puede que tenga que mostrar más de nuestro código, pero siempre y cuando cree los fragmentos en onCreate() las referencias deben ser válidas para la duración de la actividad. Compruebe el código de ejemplo de biblioteca de compatibilidad para obtener más información sobre el uso de fragmentos con ViewPager .

  • Cómo crear un menú de barra lateral
  • Creación de un banner de aplicación inteligente para Android
  • Widget onUpdate, onReceive
  • Mantener el estado abierto / cerrado del teclado para EditText cuando la aplicación llega al primer plano
  • Un archivo .apk que instala dos aplicaciones
  • ¿Cómo crear un botón transparente?
  • Android: muestra un cuadro de diálogo emergente cuando se hace clic en una palabra concreta de TextView
  • Android Spinner - ¿Cómo hacer que la vista desplegable sea transparente?
  • ¿Por qué no se puede agregar / quitar elementos de un ArrayAdapter?
  • Cómo mostrar 2 vistas de texto en la misma línea en Android
  • ¿Cómo crear una vista personalizada en un Widget de aplicación similar al del widget de Google Play Música?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.