gpt4 book ai didi

Android BackStack 问题

转载 作者:行者123 更新时间:2023-11-29 20:38:16 28 4
gpt4 key购买 nike

我无法解决 BackStack 的问题。我有 3 个由 Activity 管理的 fragment :

enter image description here

我使用这段代码的 fragment 之间的导航:

private void showFragment(BabysitFragment babysitFragment, UserRequest userRequest) {
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
switch (babysitFragment) {
case CHILDREN_OVERVIEW:
toolbar.setVisibility(View.VISIBLE);
Fragment childrenSpecification = ChildrenOverviewFragment.newInstance(userRequest);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.replace(R.id.fragment_container, childrenSpecification, BabysitFragment.CHILDREN_OVERVIEW.getSimpleName()).commit();
break;
case CHILD_SPECIFICATION:
toolbar.setVisibility(View.VISIBLE);
Fragment childSpecification = ChildSpecificationFragment.newInstance(userRequest);
fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.replace(R.id.fragment_container, childSpecification, BabysitFragment.CHILD_SPECIFICATION.getSimpleName()).commit();
break;
}
}

//Gets called by FinalizeFrag and ChildSpecificationFrag
@Override
public void onChildrenOverviewNeeded(UserRequest userRequest) {
showFragment(BabysitFragment.CHILDREN_OVERVIEW, userRequest);
}

//Gets called by ChildrenOverviewFrag
@Override
public void onChildSpecificationNeeded(UserRequest userRequest) {
showFragment(BabysitFragment.CHILD_SPECIFICATION, userRequest);
}

我希望用户能够使用其他 2 个 fragment 的后退按钮返回到 FinalizeFrag。这适用于当前代码,但在 1 个流程中我确实遇到了问题:

  1. 用户将新的“Child”保存在 ChildSpecificationFrag 中(工具栏中的保存图标)
  2. 用户被重定向到 ChildrenOverviewFrag
  3. 用户按下后退按钮
  4. 停留在 ChildrenOverviewFrag(应该重定向到 FinalizeFrag)

注意:当我再次按下按钮时,它会重定向到 FinalizeFrag

点击关闭按钮时的代码(ChildSpecificationFragment):

if (id == android.R.id.home) {
getActivity().onBackPressed();
}

点击保存按钮时的代码(ChildSpecificationFragment):

...
userRequest.getFamilyDetails().getChildren().add(child);
getActivity().getSupportFragmentManager().popBackStackImmediate();
onChildrenOverviewNeededListener.onChildrenOverviewNeeded(userRequest, this);

如您所见,我正在从 BackStack 中删除 fragment 。我究竟做错了什么?提前致谢!

最佳答案

在执行“用户被重定向到 ChildrenOverviewFrag”之前,不要调用 addToBackStack,

关于Android BackStack 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31223788/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com