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 … ??
- Uso de DatePicker sin selector de día
- Cómo cancelar Android ListView elemento de ser activado / resaltado en ListView setOnItemClickListener?
- Actualización de Android de ListView
- Android: Evita que el campo de texto aparezca al ingresar texto en un SearchView
- Widget con el proveedor de contenido; Imposible de usar ReadPermission?
¿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); }
- ¿Resplandor de encargo del color del resplandor / del borde para ListView?
- Ejemplo de uso de pestañas de Android con Vistas en lugar de Actividades?
- Cómo mantener el tiempo de espera de sesión en la aplicación Android
- TextView corta el texto cuando es lo suficientemente largo
- Haga que una cierta parte de un android-textview se alinee a la derecha
- Cambiar el color de texto de Time Picker
- Múltiples tamaños de widgets
- Android: pasar el objeto del widget de recopilación a la actividad
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
.
- La eliminación del último elemento de la ruleta suprime toda la lista
- Cómo solucionar los archivos / carpetas de autoomitar que empiezan con "_" (subrayado) en la carpeta de activos