【发布时间】:2021-01-03 16:02:58
【问题描述】:
我已经搜索了很多,并在互联网上找到了很多解释,但我仍然对Fragments 和 FragmentManager 和 findFragmentByTag 感到困惑
假设我有三个片段FragmentA,FragmentB,FragmentC,A,B,C分别是它们的标签。
我按如下顺序执行FragmentTransaction:
1- 添加 FragmentA {BackStackEntryCount=1, BackStack=[A]}
2- 添加 FragmentB {BackStackEntryCount=2, BackStack=[B,A]}
3- 添加 FragmentA {BackStackEntryCount=3, BackStack=[A,B,A]}
4- 添加 FragmentC {BackStackEntryCount=4, BackStack=[C,A,B,A]}
5- 替换 FragmentA {BackStackEntryCount=5, BackStack=[A]}
在第 5 步之后,它显示 replace 将从 BackStack 中删除(销毁)所有现有的 fragments 并将添加新的但 BackStackEntryCount 显示它记住/保存了 5 个事务。所以,我在顶部有 FragmentA 并向用户展示。问题是,如果我现在执行:
supportFragmentManager.findFragmentByTag("A") // returns null But it should return FragmentA? But why it is returning null?
supportFragmentManager.fragments // shows that FragmentA in returned List
我的看法是BackStackEntryCount 只记得addToBackStack("SOME_TAG" or null) 保存的总交易,但当replace 从FragmentManager 删除所有片段时它不会更新它。请帮我澄清一下我的理解。
【问题讨论】:
-
请发布您的代码。
-
代码?我说的是理解。我的代码没有任何错误
标签: java android android-fragments kotlin