处理来自Fragment的OnBackPress

3
我有3个片段Fragment1、Fragment2和Fragment3,导航如下:
Fragment1->Fragment2->Fragment3
但是在从Fragment3返回到Fragment2并完成一些任务后,例如从Fragment2,以及从Fragment1结束此活动的情况下。
最好的方法是什么?

尝试在Activity中创建两种方法。一个是view pager item ++,另一个是view pager item--。在片段返回时相应地使用这些方法。 - Vidhi Dave
这里有一些很好的答案,可能是你想要的!https://dev59.com/fYjca4cB1Zd3GeqPyIzt - Saik Caskey
3个回答

2
请按照以下步骤进行操作: 1. 当您添加片段时,请将以下代码添加到您的代码中。
fragmentTransaction.addToBackStack(null);
  1. Then back button handle from the activity.

    @Override
    public void onBackPressed() {
    if (getFragmentManager().getBackStackEntryCount()>0){
        getFragmentManager().popBackStack();
    }else {
        super.onBackPressed();
    } }
    

它将完美地工作。愉快编码。


2
根据您的问题,您只需要在执行 commit() 事务之前添加 addToBackStack() 方法即可。例如:
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();
    } 
}

在 onBackPress 中,我可以通过 getSupportFragmentManager().findFragmentBYId(id) 来检查 Fragment 实例吗? - Vineeth Mohan
实际上,您可能需要访问GoodLife在(https://dev59.com/tmIj5IYBdhLWcg3wWkCd#20340492)上的答案。 - meyasir

1

不需要在Fragment内部处理OnBackPress。当执行Fragment事务时,可以将您的片段放入BackStack

当后退堆栈上有FragmentTransaction对象并且用户按下Back按钮时,FragmentManager会弹出最近的事务并执行相反的操作(例如,如果事务添加了一个片段,则删除它)。

您可以从这个article获取更多详细信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接