FragmentTabHost继承TabHost,增加了对Fragment的支持。

Fragment是从Android3.0才引入,Fragment有自己单独的生命周期,在Activity运行的时候可以很方便的使用。
这里只是介绍FragmentTabHost的用法。

1. 先看看谷歌官方文档上的两个例子:

import com.example.android.supportv4.R;

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTabHost;

/**
 * This demonstrates how you can implement switching between the tabs of a
 * TabHost through fragments, using FragmentTabHost.
 */
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);
    }
}

import com.example.android.supportv4.R;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTabHost;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class FragmentTabsFragmentSupport extends Fragment {
    private FragmentTabHost mTabHost;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        mTabHost = new FragmentTabHost(getActivity());
        mTabHost.setup(getActivity(), getChildFragmentManager(), R.id.fragment1);

        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);

        return mTabHost;
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        mTabHost = null;
    }
}


第一个例子是在Activity中使用,直接在XML文件中定义,通过setup(Context, FragmentManager, int) 完成TabHost的初始化,再依次添加Tab。

第二个例子是在Fragment中使用,通过构造函数mTabHost = new FragmentTabHost(getActivity())和setup(Context, FragmentManager, int) 完成TabHost的初始化,再依次添加Tab。

注意:

getFragmentManager拿到的是activity对所包含fragment的Manager;

getChildFragmentManager()拿到fragment嵌套fragment的Manager;

引用android-support-v4的话,要使用 getSupportFragmentManager();


2. FragmentTabHost常见用法:


更多相关文章

  1. Java类的初始化顺序
  2. 关于一个简单的策略设计模式的例子
  3. javascript小例子--实现邮箱验证的功能
  4. ***100分,谁有用java mail做的把表单直接发送到邮箱的网页例子,发
  5. java死锁的例子
  6. JAVA-初步认识-第十章-对象的初始化过程
  7. Zookeeper官网文档—第三章 2.Zookeeper Java例子
  8. Java虚拟机:类的初始化
  9. JAVA异步加回调的例子

随机推荐

  1. Android 项目基础之XML
  2. 一篇讲的很细很好的帖子
  3. android 键盘状态,获取键盘显示和隐藏
  4. Unity—Android通讯
  5. CheckedTextView 显示问题
  6. android 常见问题解决
  7. [Android Memory] Android 的 StrictMode
  8. android圆角矩形的实现
  9. undefined reference to `android::mArgC
  10. Examples_07_06 无法下载android的sdk