- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
从 SDK 26.0.0-beta1 及更高版本开始,使用 getFragments
https://developer.android.com/reference/android/support/v4/app/FragmentManager.html#getFragments()方法返回一个只有 1 个 fragment 的列表,并且列表的大小也始终为 1(因此这排除了任何可能误导我的空条目),当使用 replace
时。 fragment 导航方法。
请记住我使用的是 getSupportFragmentManager
, 不是 getFragmentManager
在此 SDK 版本之前,所有 fragment 交易均使用 replace
完成将列在 getFragments
中方法。这意味着如果我替换 10 个 fragment ,那么 getFragments
将返回包含所有这 10 个 fragment 的列表。
但是,从 SDK 26.0.0-beta1 - 特别是 - 及更高版本(26.0.0-alpha1 及以下版本没有此问题)开始,该方法始终返回大小为 1 的列表,其中仅包含被替换的最后一个 fragment 。
为了避免这个问题,我开始使用 add
并隐藏以前可见的 fragment ,到目前为止,这对我想要的是有效的,即检查哪个是 getFragments
中的第一个 fragment 。每当我需要时列出,并查看某个 fragment 的实例是否已经在该列表中。
现在当我尝试使用共享元素转换时出现了一个新问题,它只适用于 replace
(据我的 google fu 允许我找到)意味着如果我想使用共享元素转换我必须返回使用 replace
fragment 而不是 add
, 但我会再次回到最初的问题。
所以现在我陷入了这种困境,希望有人能解决这个问题:
getFragments
假设我们只使用 replace
时只返回 1 个 fragment 方法还是此行为是尚未修复的未记录错误?replace
的情况下在 fragment 之间进行共享元素转换? ?最佳答案
我知道这是一篇旧帖子,你现在可能已经解决了,但这是我在谷歌搜索相同问题时发现的第一件事,所以希望这对某人有帮助(当我在几个月的时间)。
如果您调用 fragmentManager.getBackStackEntryCount() ,您应该获得后台堆栈中所有 fragment 的计数。假设您在添加/替换 fragment 时为 fragment 分配了一个标签,然后将它们添加到后台堆栈,然后您可以在后台获取 fragment 的标签并使用 fragmentManager.findFragmentByTag() 获取其实例。
在 fragment 添加/替换期间设置标签:
transaction.replace(R.id.fragment_container, newFragment, fragmentName)
transaction.add(R.id.fragment_container, newFragment, fragmentName)
并将其添加到后台:
transaction.addToBackStack(fragmentName);
然后循环遍历您的后台堆栈以查找特定 fragment :
final FragmentManager fragmentManager = getSupportFragmentManager();
for (int i = fragmentManager.getBackStackEntryCount() - 1; i >= 0; i--)
{
Fragment fragment = fragmentManager.findFragmentByTag(fragmentManager.getBackStackEntryAt(i).getName());
// ...
}
我正在反向遍历 fragment ,因此我添加的最后一个 fragment 将首先返回。
关于android - getFragments 方法在使用替换事务时只返回 1 个 fragment ,用于返回所有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46827703/
背景: 我正在使用的 Jenkins 插件是: Bitbucket 插件 Bitbucket Pullrequest Builder 插件 我工作的公司正在使用 Jira + Bitbucket。 我
我是一名优秀的程序员,十分优秀!