2013年9月11日 星期三

單元三 Fragment 的 Tab 應用 --- TabFragment

隨著 Fragment 的興起, TabActivity 這個物件已經不再維護了,
那我們要做類似 TabActivity 的畫面要如何做呢?

方式很簡單,
取得 FragmentTabHost, 再把 Fragment 塞入 Tab 中, 這樣就行了.

程式碼不多, 直接看 code 吧!

MainActivity.class
 public class FragmentTabs extends FragmentActivity {  
   private FragmentTabHost mTabHost;  
   @Override  
   protected void onCreate(Bundle savedInstanceState) {  
     super.onCreate(savedInstanceState);  
     setContentView(R.layout.fragment_tabs);  
     mTabHost = (FragmentTabHost)findViewById(android.R.id.tabhost);  
     mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);  
     mTabHost.addTab(mTabHost.newTabSpec("simple").setIndicator("Simple"),  
         FragmentStackSupport.CountingFragment.class, null);  
     mTabHost.addTab(mTabHost.newTabSpec("contacts").setIndicator("Contacts"),  
         LoaderCursorSupport.CursorLoaderListFragment.class, null);  
     mTabHost.addTab(mTabHost.newTabSpec("custom").setIndicator("Custom"),  
         LoaderCustomSupport.AppListFragment.class, null);  
     mTabHost.addTab(mTabHost.newTabSpec("throttle").setIndicator("Throttle"),  
         LoaderThrottleSupport.ThrottledLoaderListFragment.class, null);  
   }  
 }  

fragment_tabs.xml
 <android.support.v4.app.FragmentTabHost  
   xmlns:android="http://schemas.android.com/apk/res/android"  
   android:id="@android:id/tabhost"  
   android:layout_width="match_parent"  
   android:layout_height="match_parent">  
   <LinearLayout  
     android:orientation="vertical"  
     android:layout_width="match_parent"  
     android:layout_height="match_parent">  
     <TabWidget  
       android:id="@android:id/tabs"  
       android:orientation="horizontal"  
       android:layout_width="match_parent"  
       android:layout_height="wrap_content"  
       android:layout_weight="0"/>  
     <FrameLayout  
       android:id="@android:id/tabcontent"  
       android:layout_width="0dp"  
       android:layout_height="0dp"  
       android:layout_weight="0"/>  
     <FrameLayout  
       android:id="@+id/realtabcontent"  
       android:layout_width="match_parent"  
       android:layout_height="0dp"  
       android:layout_weight="1"/>  
   </LinearLayout>  
 </android.support.v4.app.FragmentTabHost>  

的 Fragments, 包刮:
CountingFragment.class, CursorLoaderListFragment.class, AppListFragment.class, ThrottleLoaderListFragment.class 我們沒有實作, 大家在開發上根據自己的需求實作即可.

範例圖片






沒有留言:

張貼留言