一.准备好需要显示的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;
}
}