FragmentTabHost简单用法,以及Fragment生命周期

1、MainActivity布局

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

    <LinearLayout  android:id="@+id/realtabcontent" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="horizontal">
    </LinearLayout>

    <android.support.v4.app.FragmentTabHost  android:id="@android:id/tabhost" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:visibility="gone">

        <FrameLayout  android:id="@android:id/tabcontent" android:layout_width="match_parent" android:layout_height="wrap_content">

            <LinearLayout  android:id="@+id/fragment_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="10dp">
            </LinearLayout>
        </FrameLayout>
    </android.support.v4.app.FragmentTabHost>

    <LinearLayout  android:id="@+id/main_bottom_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#00000000" android:gravity="center" android:orientation="vertical">

        <View  android:layout_width="match_parent" android:layout_height="1dp" android:background="#DADADA"/>

        <RadioGroup  android:id="@+id/radioGroup1" android:layout_width="match_parent" android:layout_height="80dp" android:orientation="horizontal" android:paddingLeft="10dp" android:paddingRight="10dp" android:paddingTop="5dp">

            <RadioButton  android:id="@+id/information" style="@style/main_bottom" android:layout_width="wrap_content" android:checked="true" android:drawableTop="@mipmap/ic_launcher" android:text="一" android:textColor="#000000"/>

            <RadioButton  android:id="@+id/blog" style="@style/main_bottom" android:drawableTop="@mipmap/ic_launcher" android:text="二" android:textColor="#000000"/>

            <RadioButton  android:id="@+id/zxg" style="@style/main_bottom" android:drawableTop="@mipmap/ic_launcher" android:text="三" android:textColor="#000000"/>

            <RadioButton  android:id="@+id/find" style="@style/main_bottom" android:drawableTop="@mipmap/ic_launcher" android:text="四" android:textColor="#000000"/>

            <RadioButton  android:id="@+id/person" style="@style/main_bottom" android:drawableTop="@mipmap/ic_launcher" android:text="五" android:textColor="#000000"/>
        </RadioGroup>
    </LinearLayout>
</LinearLayout>

注:经运行,FragmentTabHost中包含的以下代码,可以不写。

 <FrameLayout  android:id="@android:id/tabcontent" android:layout_width="match_parent" android:layout_height="wrap_content">

            <LinearLayout  android:id="@+id/fragment_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="10dp">
            </LinearLayout>
        </FrameLayout>

2、在activity中使用

MainActivity extends FragmentActivity implements RadioGroup.OnCheckedChangeListener
        mTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
        mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);

        // 设置显示的标题
        TabHost.TabSpec tabSpecA = mTabHost.newTabSpec("0").setIndicator("A");
        TabHost.TabSpec tabSpecB = mTabHost.newTabSpec("1").setIndicator("B");
        TabHost.TabSpec tabSpecC = mTabHost.newTabSpec("2").setIndicator("C");
        TabHost.TabSpec tabSpecD = mTabHost.newTabSpec("3").setIndicator("D");
        TabHost.TabSpec tabSpecE = mTabHost.newTabSpec("4").setIndicator("E");


        // 添加对象
        mTabHost.addTab(tabSpecA, OneFragment.class, null);
        mTabHost.addTab(tabSpecB, TwoFragment.class, null);
        mTabHost.addTab(tabSpecC, ThreeFragment.class, null);
        mTabHost.addTab(tabSpecD, FourFragment.class, null);
        mTabHost.addTab(tabSpecE, FiveFragment.class, null);

        mMainGroup = (RadioGroup) findViewById(R.id.radioGroup1);
        mMainGroup.setOnCheckedChangeListener(this);
@Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
        switch (checkedId) {
            case R.id.information:
                mTabHost.setCurrentTabByTag("0");
                break;
            case R.id.blog:
                mTabHost.setCurrentTabByTag("1");
                break;
            case R.id.zxg:
                mTabHost.setCurrentTabByTag("2");
                break;
            case R.id.find:
                mTabHost.setCurrentTabByTag("3");
                break;
            case R.id.person:
                mTabHost.setCurrentTabByTag("4");
                break;
            default:
                break;
        }
    }

**接下来是fragment的生命周期,因为fragment是依赖于activity的,所以一起打印。
这里测试了4种常见情况:**
1、启动-home-清缓存

启动

---activity---onCreate---
---activity---onStart---
---activity---onResume---

---Fragment---onAttach---
---Fragment---onCreate---
---Fragment---onCreateView---
---Fragment---onActivityCreated---
---Fragment---onStart---
---Fragment---onResume---

按下home

---Fragment---onPause---
---activity---onPause---

---Fragment---onStop---
---activity---onStop---


再次回到界面
---Fragment---onStart---
---activity---onStart---
---activity---onResume---
---Fragment---onResume---


按下home

---Fragment---onPause---
---activity---onPause---

---Fragment---onStop---
---activity---onStop---


清缓存

---Fragment---onDestroyView---
---Fragment---onDestroy---
---Fragment---onDetach---
---activity---onDestroy---

2、启动-第一个fragment-另一个

启动-默认显示第一个fragment

---activity---onCreate---
---activity---onStart---
---activity---onResume---
---Fragment---onAttach---
---Fragment---onCreate---
---Fragment---onCreateView---
---Fragment---onActivityCreated---
---Fragment---onStart---
---Fragment---onResume---


另一个

---Fragment---onPause---
---Fragment---onStop---
---Fragment---onDestroyView---
---另一个Fragment---onAttach---
---另一个Fragment---onCreate---
---另一个Fragment---onCreateView---
---另一个Fragment---onActivityCreated---
---另一个Fragment---onStart---
---另一个Fragment---onResume---


回到第一个

---另一个Fragment---onPause---
---另一个Fragment---onStop---
---另一个Fragment---onDestroyView---
---Fragment---onCreateView---
---Fragment---onActivityCreated---
---Fragment---onStart---
---Fragment---onResume---


home

---Fragment---onPause---
---activity---onPause---
---Fragment---onStop---
---activity---onStop---


清缓存

---Fragment---onDestroyView---
---Fragment---onDestroy---
---Fragment---onDetach---
---另一个Fragment---onDestroy---
---另一个Fragment---onDetach---
---activity---onDestroy---

3、启动-锁屏-屏幕亮-进入界面-home-清缓存

启动

---activity---onCreate---
---activity---onStart---
---activity---onResume---
---Fragment---onAttach---
---Fragment---onCreate---
---Fragment---onCreateView---
---Fragment---onActivityCreated---
---Fragment---onStart---
---Fragment---onResume---


锁屏

---Fragment---onPause---
---activity---onPause---
---Fragment---onStop---
---activity---onStop---


屏幕亮
没变化



解锁进入界面

---Fragment---onStart---
---activity---onStart---
---activity---onResume---
---Fragment---onResume---


home

---Fragment---onPause---
---activity---onPause---
---Fragment---onStop---
---activity---onStop---

清缓存

---Fragment---onDestroyView---
---Fragment---onDestroy---
---Fragment---onDetach---
---activity---onDestroy---

4、跳转到另一个activity,然后另一个activity被finish

跳转

---Fragment---onPause---
---activity---onPause---
---Fragment---onStop---
---activity---onStop---

回来

---Fragment---onStart---
---activity---onStart---
---activity---onResume---
---Fragment---onResume---

home

---Fragment---onPause---
---activity---onPause---
---Fragment---onStop---
---activity---onStop---

清缓存

---Fragment---onDestroyView---
---Fragment---onDestroy---
---Fragment---onDetach---
---activity---onDestroy---

你可能感兴趣的:(FragmentTabHost简单用法,以及Fragment生命周期)