2011-09-16 21 views
6

Duplicar posible:
Separate Back Stack for each tab in Android using FragmentsAndroid Fragmento de estado de vista dentro de un huésped pestaña

recientemente he empezado a trabajar en una aplicación con fragmentos dentro de un host dentro de una pestaña FragmentActivity .. la Se dice que la documentación de Android hace esto porque la clase TabActivity ahora está en desuso. Para usar fragmentos, estoy usando la biblioteca de soporte de Android v4.

Actualmente mi aplicación consiste en una pestaña dentro de la cual existen los fragmentos. Para navegar a nuevos fragmentos dentro de la pestaña He estado usando el siguiente código (que parece ser correcto en función de la documentación):

FragmentTransaction ft = fragmentManager.beginTransaction(); 
ft.replace(containerId, newFragment); 
ft.addToBackStack(null); 
ft.commit(); 

Todo fue muy bien hasta que llegué a la tecla de retroceso para navegar a una anterior fragmento y se dio cuenta de que todo mi estado de vista había sido destruido. Lo que sucedía es que el método onCreateView() se llamaba nuevamente en mi fragmento anterior, aunque sus vistas habían sido creadas previamente ... ¿por qué? He buscado cómo mantener adecuadamente el estado con fragmentos, pero parece que no puedo encontrar documentación decente sobre esto.

Lo que luego trató fue utilizar la

ft.add(containerId, newFragment); 

en lugar de

ft.replace(containerId, newFragment); 

Esto, de hecho, funcionó bastante bien en que mi estado de vista se mantuvo - onCreateView() no fue llamado cada vez mis fragmentos anteriores fueron mostrados. Sin embargo, lo que comencé a notar fue que podía interactuar con componentes (botón, etc.) de fragmentos anteriores que yacían debajo del fragmento actual, ¡aunque no podía ver los componentes !? He leído en alguna parte que el siguiente método se debe utilizar para ahorrar algo de estado:

public void onSaveInstanceState (Bundle outState) 

he implementado este método, sin embargo, nunca fue llamado! También noté que los paquetes pasados ​​a los métodos onCreateView() y onActivityCreated() siempre son nulos. Seguramente Google no ha hecho esto tan difícil de lograr algo como esto y me falta algo? Cualquier ayuda sobre cómo mantener correctamente el estado de vista de un fragmento será muy apreciada.

Gracias.

+0

¿Alguien más ha experimentado esto? ¡Por favor ayuda! :) –

+0

OK, por lo que parece que el problema de estado de vista no es un problema cuando simplemente se navega entre fragmentos, sino cuando se trata de otra actividad ... Consulte el error que he registrado (problema 20120): http: // code. google.com/p/android/issues/detail?id=20120 –

Respuesta

Cuestiones relacionadas