【问题标题】:Android fragment OnCreateView called twiceAndroid 片段 OnCreateView 调用了两次
【发布时间】:2015-07-11 08:32:50
【问题描述】:

我正在使用带有片段的 FragmentPagerAdapter。我的问题是,当我调用 setCurrentItem 时,正在加载的片段的 OnCreateView 方法被调用了两次。然而,重要的是要注意片段不是重新创建的,它只是恢复。我迫切希望找到一种解决方案,使 OnCreateView 只被调用一次。

我查看了以下问题以及其他一些问题,但没有一个包含我的案例的答案:

Android oncreateview called twice

OnCreateView called multiple times / Working with ActionBar and Fragments

Fragment onCreateView and onActivityCreated called twice

我发现的大多数问题都与 FragmentViewPagers 无关,因此它们大多没有帮助。

如果有任何帮助,我将不胜感激!

【问题讨论】:

    标签: android android-fragments android-viewpager oncreate


    【解决方案1】:

    我正在使用带有片段的 FragmentPagerAdapter。我的问题是 当我调用 setCurrentItem 时,片段的 OnCreateView 方法 正在加载的被调用两次。重要的是要注意 片段没有重新创建,它只是恢复。我是 迫切希望找到导致 OnCreateView 的解决方案 调用一次。

    它不会被调用两次。您遇到的是ViewPager 的默认行为,它始终缓存其页面的至少一个(Fragment),具体取决于setOffscreenPageLimit(int limit) 的值。所以onCreateViewgetItem 返回的每个实例调用一次

    【讨论】:

    • 我不太明白你在说什么。你是说当我切换到一个页面时,它会加载片段但也会加载缓存版本,因此 oncreateview 被调用两次?
    • 这让我觉得很奇怪,因为每当我切换到片段页面时都会调用两次 oncreateview,即使我只在与其相邻的页面中。这表明即使有一个可用的缓存副本,viewpager 也会创建一个缓存副本。如果缓存是多余的,正如这个证据所暗示的那样,我怎样才能摆脱这种行为?
    • 显然,如果我从相邻的片段页面滑动,它只会调用一次。我正在我的 oncreateview 中发出网络请求。有没有办法可以将可见片段网络请求的数据响应传递给缓存版本,这样这些请求就不必执行两次?
    • 并非如此。您可能想考虑一种不同的方法
    猜你喜欢
    • 2012-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多