2012-05-23 34 views
11

Estoy usando android.support.v4.view.ViewPager en una aplicación.¿Cómo se maneja savedInstanceState cuando se usa ViewPager?

Cuando el usuario gira la pantalla, la actividad se destruye y se vuelve a crear. Los fragmentos que están activos actualmente en el ViewPager (generalmente el que está en la pantalla, el que está a la izquierda y el que se encuentra a la derecha) se almacenan en el savedInstanceState.

Se crea una actividad nueva, FragmentActivity.onCreate(savedInstanceState) se llama con el estado de fragmento, y esos tres fragmentos se vuelven a crear utilizando el paquete. Sin embargo, mi onCreate también configura el adaptador ViewPager y ViewPager, que crean sus propios fragmentos de nuevo, lo que resulta en DOS de cada uno de esos tres fragmentos.

¿Cómo puedo asociar los fragmentos nuevamente creados automáticamente con el adaptador de mi ViewPager en lugar de volver a crearlos desde cero?

Respuesta

17

No importa. Parece que estaba usando FragmentPagerAdapter incorrectamente.

La forma correcta de usar FragmentPagerAdapter es crear una instancia de su nuevo fragmento en getItem(). Estaba instanciando todos mis fragmentos en el constructor del adaptador, almacenándolos en una matriz, y luego buscándolos en la matriz y devolviendo el fragmento apropiado en getItem().

Si instancia su fragmento de getItem(), entonces FragmentPagerAdapter.instantiateItem() utilizará automáticamente el fragmento de reciclaje en lugar de crear uno nuevo.

+0

Eres un salvavidas, gracias. – Simon

Cuestiones relacionadas