第一点: 项目的需求介绍
android 开发中首页的搭建一般都是底部四部分(是个view就可以),上面是fragment,要实现的效果是,第一,不可以滑动;第二,第一次启动进来的时候默认启动一个fragment,点击哪一个就让哪一个加载出来;第三,一旦加载一次后,再次点击这个fragment就不要让他在重复加载了。
第二点:fragment的几个方法介绍
主要的方法有,replace,add,show,hide,remove,而replace和add的区别就是,replace切换的时候会将fragment的生命周期走完,也就是说每一次切换这个fragment都会重新加载;而add切换的时候不会销毁前一个fragment,这样就可以使加载完一次后就不需要在重新加载了,调用show方法就可以了。
第三点:主要代码的展示
/**
* 设置进去默认展示的fragment
*
* @param fragment
*/
public void setDefaultFragment(Fragment fragment) {
fragmentTransaction = getSupportFragmentManager().beginTransaction();
//默认添加一个fragment
fragmentTransaction.add(R.id.content, fragment).commit();
//add的话fragment有两层fragment,mFragment是中间转换的fragment,每一次切换的时候都把切换的值赋给他
mFragment = fragment;
text1.setTextColor(ContextCompat.getColor(this, R.color.colorAccent));
}
/**
* 切换fragment的方法
*
* @param fragment
*/
public void switchFragment(Fragment fragment, TextView textView) {
if (mFragment != fragment) {//选择的不是上一次设置的那个fragment
fragmentTransaction = getSupportFragmentManager().beginTransaction();
//判断是否添加过
if (!fragment.isAdded()) {//没有被添加过,隐藏当前的fragment,add下一个到Activity中
fragmentTransaction.hide(mFragment).add(R.id.content, fragment).commit();
} else {//已经被添加过,隐藏当前的fragment,show下一个到Activity中
fragmentTransaction.hide(mFragment).show(fragment).commit();
}
mFragment = fragment;//赋值给转化的mFragment
} else {
Toast.makeText(this, "我是刚才选过的", Toast.LENGTH_SHORT).show();
}
textView.setTextColor(ContextCompat.getColor(this, R.color.colorAccent));
}