FragmentTransaction实现Fragment转换

来源:互联网 发布:数据恢复培训 编辑:程序博客网 时间:2024/05/02 04:18

用的是v4包,所以获取用 getSupportFragmentManager

1、定义FragmentTransaction和Fragment

private FragmentTransaction fragmentTransaction;private Fragment indexFragment,msgFragment,meFragment;

其中IndexFragment要extends Fragment

并且加上这句代码:

 @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container,                             Bundle savedInstanceState) {        return inflater.inflate(R.layout.fragment_index, container, false);    }

因为这个例子是一个Av\ctivity多个Fragment,所以在Fragment中要定义一个接口

public interface OnFragmentInteractionListener {        //实现不同Fragment之间的通信        // TODO: Update argument type and name        public void onFragmentInteraction(Uri uri);    }

在onAttach方法中添加:

 @Override    public void onAttach(Activity activity) {        super.onAttach(activity);        try {            //新建的Fragment要被一个activity使用必须要继承一个接口OnFragmentInteractionListener            mListener = (OnFragmentInteractionListener) activity;        } catch (ClassCastException e) {            throw new ClassCastException(activity.toString()                    + " must implement OnFragmentInteractionListener");        }    }

2、初始化事务,R.id.fi_content为:需要显示的地址,直接add,最后要提交事务

 fragmentTransaction =  getSupportFragmentManager().beginTransaction();        hideall();        switch (id){            case  R.id.one:                if(indexFragment==null){                    indexFragment = IndexFragment.newInstance();                    fragmentTransaction.add(R.id.fl_content,indexFragment);                }else{                    fragmentTransaction.show(indexFragment);                }                break;             case R.id.two:                if(msgFragment==null){                    msgFragment = MsgFragment.newInstance();                    fragmentTransaction.add(R.id.fl_content,msgFragment);                }else{                    fragmentTransaction.show(msgFragment);                }                break;            case R.id.three:                if(meFragment==null){                    meFragment = MeFragment.newInstance();                    fragmentTransaction.add(R.id.fl_content,meFragment);                }else{                    fragmentTransaction.show(meFragment);                }                break;        }        fragmentTransaction.commit();
3、

void hideall(){        //初始化各个Fragment,为空        if(indexFragment!=null){            fragmentTransaction.hide(indexFragment);        }        if(msgFragment!=null){            fragmentTransaction.hide(msgFragment);        }        if(meFragment!=null){            fragmentTransaction.hide(meFragment);        }    }



0 0
原创粉丝点击