2012-03-22 13 views
7

¿Puede alguien explicarme o quizás señalar un enlace o un ejemplo de cómo se debe manejar la orientación de la pantalla cuando se trata de fragmentos? El problema que estoy teniendo en este momento es que tengo una aplicación con una barra de acción con tres pestañas. Cada pestaña contiene un fragmento. Así que cuando muevo de un tirón el dispositivo, sólo el fragmento que poner como seleccionada utilizandofragmento que maneja la orientación de la pantalla con pestañas en la barra de acciones

actionbar.setSelectedNavigationItem(1) 

se muestra (para ninguna confusión, las otras pestañas son visibles, pero cuando hago clic en ellas no pasa nada, no pueden ser seleccionado y mostrado. Su contenido nunca se muestra). ¿Hay algo que se haga en estos casos? ¿Puede alguien darme un consejo, lo agradecería? Gracias.

Respuesta

13

que tenían el mismo problema y encontrar una solución a este problema: http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/FragmentTabs.html

problema es que ya son fragmentos de las pestañas del estado previamente guardado. Tienes que desactivarlos.

Aquí es el código de fragmento para el constructor de la TabListener:

public TabListener(Activity activity, String tag, Class<T> clz, Bundle args) { 
     mActivity = activity; 
     mTag = tag; 
     mClass = clz; 
     mArgs = args; 

     // Check to see if we already have a fragment for this tab, probably 
     // from a previously saved state. If so, deactivate it, because our 
     // initial state is that a tab isn't shown. 
     mFragment = mActivity.getFragmentManager().findFragmentByTag(mTag); 
     if (mFragment != null && !mFragment.isDetached()) { 
      FragmentTransaction ft = mActivity.getFragmentManager().beginTransaction(); 
      ft.detach(mFragment); 
      ft.commit(); 
     } 
    } 

esperanza que podría ayudarle.

+0

Me di cuenta de lo mismo, hace unos días. Pero lo resolvió un poco más diferente. En el método onDestroyView en los fragmentos, llamo remove para ese fragmento en particular, por lo que no habrá fragmentos de estados anteriores. Pero tu forma de resolver el problema también, me imagino. ¡Así que gracias! – Sandra

+0

Bien explicado, tiene sentido, resuelve un problema común específico. Muchas gracias. A + – LeffelMania

+1

¡Gracias! Por cierto, utilizo hide/show en lugar de detach/attach en algunos lugares, para evitar la recreación de fragmentos de vista (a veces es larga). Y funciona entonces también. –

Cuestiones relacionadas