2011-09-15 32 views
6

Hola Tengo un LineLayout que contiene dos fragmentos y agrego pestañas con código para este diseño. Lo que quiero es que cuando hago clic en tab1, esté bien fragmentar el relleno de la clase indicada, pero en la pestaña 2 quiero cambiar esta clase a otra clase. Graciascómo cambiar la clase del fragmento de forma dinámica

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/frags"> 

    <fragment class="com.tugce.MitsActionBar.DoktorlarFragment" 
      android:id="@+id/frag_title" 
      android:visibility="gone" 
      android:layout_marginTop="?android:attr/actionBarSize" 
      android:layout_width="@dimen/titles_size" 
      android:layout_height="match_parent" /> 

    <fragment class="com.tugce.MitsActionBar.ContentFragment" 
      android:id="@+id/frag_content" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" /> 

Respuesta

24

Cambio <fragment/> en diseño xml a <FrameLayout/>

<FrameLayout 
     android:id="@+id/frag_title" 
     android:visibility="gone" 
     android:layout_marginTop="?android:attr/actionBarSize" 
     android:layout_width="@dimen/titles_size" 
     android:layout_height="match_parent" /> 

<FrameLayout 
     android:id="@+id/frag_content" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

y añadir fragmentos de programación:

FragmentManager fragmentManager = getFragmentManager() 
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 

ExampleFragment fragment = new ExampleFragment(); 
fragmentTransaction.replace(R.id.frag_content, fragment); 
fragmentTransaction.commit(); 

Pero al principio leer this.

+1

Gracias por su respuesta que sólo tiene que sustituir FrameLayout con mi fragmento = DoktorlarFragment() no hay errores y nada en la pantalla ¿tienes alguna idea de por qué? – tugce

3

versión más corta de llamar a un fragmento de

getFragmentManager().beginTransaction().replace(R.id.splash_container, new ExampleFragment()).addToBackStack(null).commit(); 

addToBackStack(null) es opcional si desea guardar el fragmento en la pila o no ..

Cuestiones relacionadas