最后一步就是把Fragment从Activity中解绑,即调用onDetach方法。
Fragment返回栈的管理
将Fragment添加到返回栈中:
假设现在我们有两个Fragment:Fragment01和Fragment02,我们现在从Fragment01的界面跳到 Fragment02,然后按Back键,发现程序是直接退出了,而不是返回到Fragment01。如果现在想实现以下功能:从Fragment01的 界面跳到Fragment02,然后按Back键,会返回到Fragment01。这个功能该怎么实现呢?这其实就利用到了返回栈的知识。
其实很简单,FragmentTransaction中提供了一个addToBackStack()方法,可以将一个事务添加到返回栈中。
我们这里在一段动态加载Fragment的代码基础之上,增加一行代码就可以将Fragment添加到返回栈中:
//步骤一:添加一个FragmentTransaction的实例 FragmentTransaction transaction = getFragmentManager().beginTransaction(); //步骤二:用add()方法加上Fragment的对象 RightFragment rightFragment = new RightFragment(); transaction.add(R.id.right, rightFragment); transaction.addToBackStack(null); //步骤三:调用commit()方法使得FragmentTransaction实例的改变生效 transaction.commit();
我们在事务提交之前调用了FragmentTransaction的addToBackStack()方法,它可以接受一个名字用于描述返回栈的状态,一般传入null即可。
例子
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
transaction = manager.beginTransaction(); 47 switch (v.getId()) {
case R.id.button1:
Fragment01 fragment01 = new Fragment01();
transaction.replace(R.id.right, fragment01, "fragment01");
transaction.addToBackStack("fragment01");// 添加到Activity管理的回退栈中。
break;
case R.id.button2:
Fragment02 fragment02 = new Fragment02();
transaction.replace(R.id.right, fragment02, "fragment02");
transaction.addToBackStack("fragment02");// 添加到Activity管理的回退栈中。
break;
case R.id.button3:
Fragment03 fragment03 = new Fragment03();
transaction.replace(R.id.right, fragment03, "fragment03");
transaction.addToBackStack("fragment03");// 添加到Activity管理的回退栈中。
break;
}
transaction.commit();
}










