我正在开发一个具有如下所示的活动和片段结构的应用程序:
我无法以这样的方式实现FragmentTransaction
,当我按下手机中的后退按钮时,它可以返回到之前的片段。因此,该系列以SubFragment1
开头,以SecondActivity结束:
SubFragment1
- > SubFragment2
- > SubFragment3
- > SecondActivity
我在FramgnetTransaction
内处理FragmentB
内容:
//This part is inside onCreateView of FragmentB
FragmentTransaction fragmentTransaction = getChildFragmentManager().beginTransaction();
fragmentTransaction.add(R.id.container, SubFragment1(), FRAGMENT_SUB1);
fragmentTransaction.addToBackStack("first");
fragmentTransaction.commit();
}
public void goToSubFragment2(){
FragmentTransaction fragmentTransaction = getChildFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.container, SubFragment2(), FRAGMENT_SUB2);
fragmentTransaction.addToBackStack("second");
fragmentTransaction.commit();
}
public void goToSubFragment3(){
FragmentTransaction fragmentTransaction = getChildFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.container, SubFragment3(), FRAGMENT_SUB3);
fragmentTransaction.addToBackStack("three");
fragmentTransaction.commit();
}
如果我想转到任何SubFragment
内的下一个SubFragment
,我只会使用:
((FragmentB) this.getParentFragment()).goToSubFragment2();
最后,在SubFragment3
中,我使用下面的代码转到SecondActivity
:
Intent intent = new Intent(getContext(), SecondActivity.class);
getContext().startActivity(intent);
那么,当我按下后退键时会发生什么...如果我在其中一个SubFragments
,它会关闭应用程序。如果我已经在SecondActivity
并按下后退按钮,应用程序崩溃并在LogCat
中显示
Unable to resume activity {com.app_name.MainActivity1}: java.lang.IllegalStateException: Already executed.
总之,我的问题是:我做错了吗?处理Fragment中的FragmentTransaction
内容是否被视为错误?如果是这样,那么正确的方法是什么?正确的方法向BackStack添加操作。
为什么后退按钮不能正常工作?