Android Fragment的OnCreateView被调用两次

6
我正在使用带有片段的FragmentPagerAdapter。我的问题是,当我调用setCurrentItem时,正在加载的片段的OnCreateView方法会被调用两次。重要的是要注意,片段并没有重新创建,只是恢复了。我迫切需要找到一个解决方案,使OnCreateView仅被调用一次。
我已经查看了以下几个问题和更多问题,但它们都没有针对我的情况提供答案: Android oncreateview called twice OnCreateView called multiple times / Working with ActionBar and Fragments Fragment onCreateView and onActivityCreated called twice 我发现的大多数问题与FragmentViewPagers无关,因此它们大多没有帮助。
非常感谢您的任何帮助!
1个回答

7
我正在使用带有片段的FragmentPagerAdapter。我的问题是,当我调用setCurrentItem时,正在加载的片段的OnCreateView方法会被调用两次。重要的是要注意,该片段并没有重新创建,而是简单地恢复了。我迫切希望找到一种解决方案,使OnCreateView只被调用一次。
实际上,它不会被调用两次。您所经历的是ViewPager的默认行为,它始终缓存至少一个页面(片段),具体取决于setOffscreenPageLimit(int limit)的值。因此,对于getItem返回的每个实例,都会调用一次onCreateView。

我不太明白你的意思。你是说当我切换到一个页面时,它会加载片段但也会加载缓存版本,因此oncreateview会被调用两次? - Userrrrrrrrr
这让我感到很奇怪,因为每当我切换到片段页面时,oncreateview都会被调用两次,即使我只在相邻的页面中。这表明,即使有一个可用的缓存副本,viewpager也会创建一个缓存副本。如果缓存是多余的,正如这个证据似乎表明的那样,我该如何摆脱这种行为呢? - Userrrrrrrrr
显然,如果我从相邻的片段页面滑动,它只会调用一次。 我正在我的oncreateview中进行网络请求。有没有办法将可见片段网络请求的数据响应传递给缓存版本,以便这些请求不必重复执行? - Userrrrrrrrr
不是很好。你可能想考虑另一种方法。 - Blackbelt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接