2011-09-15 37 views
6

Xin chào Tôi có một linearLayout chứa hai đoạn và tôi thêm các tab có mã vào bố cục này. Những gì tôi muốn là khi tôi bấm tab1 nó là ok để mảnh điền chính nó từ lớp được chỉ định, nhưng trong tab2 tôi muốn thay đổi lớp này đến lớp khác. Cảm ơn bạncách thay đổi lớp của phân đoạn động

<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" /> 

Trả lời

24

Thay đổi <fragment/> trong cách bố trí xml để <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" /> 

và thêm mảnh cách lập trình:

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

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

Nhưng lúc đầu đọc this.

+1

Cảm ơn bạn đã trả lời của bạn tôi chỉ cần thay thế frameLayout với mảnh của tôi = DoktorlarFragment() không có lỗi và không có gì trên màn hình bạn có bất kỳ ý tưởng tại sao? – tugce

3

phiên bản ngắn nhất gọi một mảnh

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

addToBackStack(null) là không bắt buộc nếu bạn muốn lưu các đoạn trên stack hay không ..

Các vấn đề liên quan