gpt4 book ai didi

java - backStack 中的 fragment

转载 作者:行者123 更新时间:2023-12-01 17:23:58 27 4
gpt4 key购买 nike

我的 ViewPager 有 3 个选项卡。 Tab(3) 包含 2 个 fragment (A) --> (B)。

Tab(1)
Tab(2)
Tab(3) --> (B) --> (C)

我在Tab(3)中替换 fragment 的方式:

FragmentTransaction trans = getActivity().getSupportFragmentManager().beginTransaction();
trans.replace(R.id.B_container, new FragmentC().newInstance(), "C");
trans.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
trans.addToBackStack("B->C");
trans.commit();

当我在 (B) 中并按下按钮时,它会直接跳转到选项卡 (3),跳过 (A)。以下是 (B) 中按钮的代码:

FragmentManager fm = getActivity().getSupportFragmentManager();
for(int i = 0; i < fm.getBackStackEntryCount(); ++i) {
fm.popBackStack();
}

一切都运转良好。问题是当我处于 (B) 时,然后我转到 Tab(1) 或 Tab(2) 并在不起作用后点击按钮。请让我知道我做错了什么。谢谢。

//============================================ ==============================

我尝试用 getChildFragmentMaganer() 替换 etActivity().getSupportFragmentManager() 。由于 popBackStack() 的常规方法不再起作用,我必须对其进行修改。现在它可以工作了,但我也遇到了同样的问题。

FragmentManager fm = getActivity().getSupportFragmentManager();
for (Fragment frag : fm.getFragments()) {
FragmentManager childFm = frag.getChildFragmentManager();
if (childFm.getBackStackEntryCount() > 0) {
childFm.popBackStack();
}
}
}

最佳答案

尝试使用 getChildFragmentManager() 获取 fragment 管理器。根据我的经验,当我在一个 fragment 内并尝试在其中放置另一个 fragment 时,我使用 getChildFragmentManager。

关于java - backStack 中的 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61238987/

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