用的是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);
}
}