2012-02-07 11 views
9

I'am crear una aplicación con un ActionBar y dos pestañas de abajo. Todo funciona bien si el dispositivo/emulador isnt gira. Si girado, estado de ficha cambia automaticale a Tab1 (normal, porque onCreate ser llamado) pero el contenido no te dan cambiado. Si selecciono una pestaña en la nueva orientación, el método de la onCreateView()Fragment seleccionadas serán llamadas pero la vista no te dan actualiza (permanecer siempre la misma). ¿Algun consejo?aquí actionbar con fragmentos en rotate

El código.

Actividad principal:

ActionBar actionbar = getActionBar(); 
    actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

    ActionBar.Tab ATab = actionbar.newTab().setText(R.string.player); 
    ActionBar.Tab BTab = actionbar.newTab().setText(R.string.stations); 

    Fragment AFragment = new AFragment(); 
    Fragment BFragment = new BFragment(); 

    PlayerTab.setTabListener(new MyTabsListener(AFragment)); 
    StationsTab.setTabListener(new MyTabsListener(BFragment)); 

    actionbar.addTab(ATab); 
    actionbar.addTab(BTab); 

Con fichas idénticas que muestran un TextView sencilla. La vista de texto simple indica qué pestaña está seleccionada.

Fragmentos:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    return inflater.inflate(R.layout.a, container, false); 
} 

la disposición Fragmento, mencionado anteriormente, solamente contiene una TextView con el texto codificado. (Solo para fines de prueba)


El diseño principal tiene este aspecto.

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" > 


    <LinearLayout 
     android:id="@+id/fragment_container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 
</LinearLayout> 

</LinearLayout> 
+0

¿Quieres onCreate() que se llamará cuando se gira el dispositivo? – nhaarman

+0

Sí y No, en este ejemplo está bien. En la aplicación final, también está bien, pero creo que no es la mejor manera. ¿Quieres usar 'android: configChanges =" keyboardHidden | orientation "'? Lo leí y alguien dijo algo sobre pérdidas de memoria y último recurso. ¿Está bien? ¿Hay una mejor manera? – Leandros

Respuesta

19

Resuelto. He recreado el fragmento cada vez, eso ya no lo resuelve.

cambiado en mi TabListener y onTabSelected(Tab tab, FragmentTransaction ft), ft.add() a ft.replace()

+2

Este error también se encuentra en los documentos oficiales Android: http://developer.android.com/guide/topics/ui/actionbar.html#Tabs Tal vez alguien puede fijarlo allí también. – StefanMK

Cuestiones relacionadas