小编use*_*715的帖子

getFragments 方法在使用替换事务时仅返回 1 个片段,用于返回所有

从 SDK 26.0.0-beta1 及更高版本开始,使用getFragments https://developer.android.com/reference/android/support/v4/app/FragmentManager.html#getFragments()方法返回仅包含 1 个片段的列表当使用replace片段导航方法时,列表的大小也始终为 1(因此这排除了任何可能误导我的可能的空条目) 。

请记住我正在使用getSupportFragmentManager,而不是getFragmentManager

在此 SDK 版本之前,所有完成的片段交易replace都会在方法中列出getFragments。这意味着如果我替换了 10 个片段,那么将getFragments返回一个包含所有这 10 个片段的列表。

但是,从 SDK 26.0.0-beta1(特别是)及更高版本(26.0.0-alpha1 及更低版本没有此问题)开始,该方法始终返回一个大小为 1 的列表,仅包含最后一个被替换的片段。

为了避免这个问题,我开始使用add和隐藏以前可见的片段,到目前为止,这满足了我想要的目的,即getFragments每当我需要时检查哪个是列表中的第一个片段,以及查看是否有某个实例该列表中已存在一个片段。

现在,当我尝试使用共享元素转换时出现了一个新问题,它仅适用于replace(据我的谷歌福允许我找到),这意味着如果我想使用共享元素转换,我必须返回使用replace片段而不是add,但我会再次回到最初的问题。

所以现在我陷入了这个困境,希望有人能解决这个问题:

  • 有没有什么办法解决这一问题?
  • getFragments当我们只使用该方法时,是否假设只返回 1 个片段,replace或者这种行为是否是一个尚未修复的未记录的错误?
  • 是否可以在不使用 的情况下在片段之间进行共享元素转换replace

android android-fragments android-studio fragmentmanager

6
推荐指数
1
解决办法
1451
查看次数