【问题标题】:Fragment Tab adapter getItem calling twice片段选项卡适配器 getItem 调用两次
【发布时间】:2015-12-21 19:06:01
【问题描述】:

我为三个标签创建了带有三个不同片段的滑动标签。所有三个选项卡都从 web 服务获取动态数据。加载时,我的第一个选项卡 Tab1 显示 Tab2 数据。 FragmentPagerAdapter 中的 getItem 方法被调用了两次。

    @Override
    public Fragment getItem(int arg0) {

        switch (arg0) {
            case 0:
                return  new Tab1;
            case 1:
                return new Tab2;
            case 2:
                return new Tab3;
            default:
                break;
        }

如何仅在加载 Tab1 时加载片段一个。

【问题讨论】:

  • 这是预期的行为。 ViewPager 缓存了一个额外的页面
  • 没关系。你应该改变你的逻辑来处理这个问题。
  • 我的 Tab1 正在显示 Tab2 数据。即使缓存了附加页面,tab1 显示正确数据的任何可能方式

标签: android android-fragments


【解决方案1】:

如何仅在加载 Tab1 时加载片段一。

你不能。

我相信您正在使用 ViewPager。这是调用 getItem() 两次的原因。这就是 ViewPager 的工作原理。它会加载上一个片段、当前片段和下一个片段,以便您在页面之间平滑滚动。

在您的情况下,您在 tab1 上,因此加载了第一页和第二页(未加载上一页,因为它不存在)

当您从 tab1 滚动到 tab2 - tab3 将被加载,依此类推

您可以使用ViewPager.setOffscreenPageLimit 设置左右多少个标签将被兑现,但最小值为 1,也是默认值。

【讨论】:

  • 是的,我使用过 ViewPager。但是我的 Tab1 没有显示它的数据。它显示 Tab2 数据。任何解决方案。
猜你喜欢
  • 1970-01-01
  • 2018-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 2018-04-13
  • 1970-01-01
相关资源
最近更新 更多