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---
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值