如何使用FragmentTabHost

一.准备好需要显示的fragment

里面有说怎么创建一个fragment

二,activity里添加fragment

包含两部分,一部分是在activity布局文件中给fragment留出位置

<FrameLayout
        android:id="@+id/fl_content"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"></FrameLayout>

    <android.support.v4.app.FragmentTabHost
        android:id="@+id/TabHost"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

那个FrameLayout就是将来被替换为fragment的对象

 

 

然后再在activity代码中动态添加fragment,这个函数主要能把activity里的FrameLayout替换为相应的Fragment,点击还会切换,这也就是FragmentTabHost的功能

 /**
     * 初始化页面布局
     */
    private void initTabHost() {
        mTabHost = findViewById(R.id.TabHost);
        mTabHost.setup(getApplicationContext(), getSupportFragmentManager(), R.id.fl_content);
        FragmentEnum[] enums = FragmentEnum.values();
        int length = enums.length;
        for (int i = 0; i < length; i++) {
            TabHost.TabSpec tabSpec = mTabHost.newTabSpec(enums[i].getName());
            tabSpec.setIndicator(enums[i].getName());
//tabSpec.setIndicator(一个view)也是可以的
            mTabHost.addTab(tabSpec, enums[i].getClazz(), null);
        }
    }

 

顺便把FragmentEnum这个类也贴出来,这个类主要是封装数据,方便使用fragment

package tools.rulerbug.www.ENUM;


import com.example.administrator.osc.Fragment.DongTanFragment;
import com.example.administrator.osc.Fragment.FaXianFragment;
import com.example.administrator.osc.Fragment.WoFragment;
import com.example.administrator.osc.Fragment.ZongHeFragment;
import com.example.administrator.osc.R;

public enum FragmentEnum {
    ZongHe(0, "综合", "ZongHe", R.drawable.tab_icon_new, ZongHeFragment.class),
    DongTan(1, "动弹", "DongTan", R.drawable.tab_icon_tweet, DongTanFragment.class),
    KongBai(2, "空白", "KongBai", R.drawable.tab_icon_new, null),
    FaXian(3, "发现", "FaXian", R.drawable.tab_icon_explore, FaXianFragment.class),
    Wo(4, "我", "Wo", R.drawable.tab_icon_me, WoFragment.class);

    private final int id;
    private final String name;
    private final String Key;
    private final int iconId;
    private final Class<?> clazz;

    FragmentEnum(int id, String name, String Key, int iconId, Class<?> clazz) {
        this.id = id;
        this.name = name;
        this.Key = Key;
        this.iconId = iconId;
        this.clazz = clazz;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public String getKey() {
        return Key;
    }

    public int getIconId() {
        return iconId;
    }

    public Class<?> getClazz() {
        return clazz;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值