我有3个片段Fragment1,Fragment2和Fragment3,导航就像
Fragment1-> Fragment2-> Fragment3
但是在背面按下Fragment3,在完成Fragment2之类的任务之后回到Fragment2。并从Fragment1完成此活动。
执行此任务的最佳方法是什么。
答案 0 :(得分:2)
请按照流程操作。 1.在代码中添加代码下面的片段添加
fragmentTransaction.addToBackStack(null);
然后从活动中返回按钮句柄。
@Override
public void onBackPressed() {
if (getFragmentManager().getBackStackEntryCount()>0){
getFragmentManager().popBackStack();
}else {
super.onBackPressed();
} }
它将完美运作。快乐的编码。
答案 1 :(得分:2)
根据您的问题,您只需在addToBackStack()
交易之前添加commit()
方法。
例如:
FirstFragment firstFragment = new FirstFragment();
getSupportFragmentManager().beginTransaction()
.replace(R.id.article_fragment, firstFragment)
.addToBackStack(null).commit();
添加与上述方式相同的第二个和第三个片段,只需在onBackPressed()
覆盖方法中添加代码。
例如:
@Override
public void onBackPressed() {
if (getFragmentManager().getBackStackEntryCount() > 0) {
getFragmentManager().popBackStack();
} else {
super.onBackPressed();
}
}
答案 2 :(得分:1)
无需在OnBackPress
内处理Fragment
。执行Fragment
交易时,您可以将您的片段设为BackStack
:
当后台堆栈上有FragmentTransaction对象并且用户按下后退按钮时,FragmentManager会从后台堆栈中弹出最近的事务并执行相反的操作(例如,如果事务添加了片段,则删除片段)。 / p>
您可以从此article获取更多详细信息。