最近在做安卓项目,然后就遇到了fragment的问题。
之前做项目的代码拿出来看,发现和这一次的做法不太一样,但在编码过程中就出现了一些跳转的问题。
之前实现fragment是利用FragmentActivity和PageView实现的,这一次就直接继承Fragment,其实思路还是一样的。
实现fragment的方法很多,下面是我这次项目采用的方法:
首先在一个Activity中添加几个Fragment,在onCreate()中初始化默认Fragment,同时借助FragmentManager来进行事务提交,最后再添加点击事件。
//添加显示fragment
private void addOrShowFragment(FragmentTransaction transaction, Fragment fragment){
if(currentFragment == fragment)
return;
if (!fragment.isAdded()){
transaction.hide(currentFragment).add(R.id.content_layout,fragment).commit();
}else {
transaction.hide(currentFragment).show(fragment).commit();
}
currentFragment = fragment;
}
//初始化底部tab
private void initTab(int id) {
switch (id){
case 1:
if (homeFragment == null)
homeFragment = new homeFragment();
if (!homeFragment.isAdded()) {
//提交事务
getSupportFragmentManager().beginTransaction().add(R.id.content_layout, homeFragment).commit();
//记录当前Fragment
currentFragment = homeFragment;
//设置底部图片文本变化
ivHome.setImageResource(R.drawable.home_orange);
}
break;
}
}
//点击事件
public void onClick(View v) {
switch (v.getId()){
case R.id.rl_home:
clickHomeLayout();
break;
}
//点击主页后的事件响应
private void clickHomeLayout(){
if (homeFragment == null)
homeFragment = new homeFragment();
addOrShowFragment(getSupportFragmentManager().beginTransaction(),homeFragment);
//设置底部图标和字体颜色
...