【问题标题】:In Tablayout I have added some tab and in that when I am switching between the tabs fragment refreshes its data? Why?在 Tablayout 中,我添加了一些选项卡,并且当我在选项卡片段之间切换时会刷新其数据?为什么?
【发布时间】:2017-09-27 06:48:02
【问题描述】:
private Boolean isStarted = false;
private Boolean isVisible = false;

@Override
    public void onStart() {
        super.onStart();
        isStarted = true;
        if (isVisible && isStarted){
            loadData();
        }

}
//
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    isVisible = isVisibleToUser;
    if (isVisible && isStarted) {
        loadData();
    }
}

我想要做的是,当我启动应用程序时,数据来自 db,当我点击 tab2 时,它显示在 tab1 中,它再次点击 db 并带来数据并显示。当我回到 tab1 时出现问题,然后它再次点击 db 并带来数据并再次在 tab1 中设置数据,但它的数据已经加载。

我已经设置了viewPager.setOffscreenPageLimit(1);

需要帮助吗? 谢谢

【问题讨论】:

  • 你在 viewPager 中添加了多少片段?
  • 我只添加了 1 个片段,标签是 4 个。所有查询在片段中都相似,只有标题不同,所以我重复使用相同的片段。
  • 即使重复使用片段,也会创建不同的实例。将 offScreenPageLimit 设置为片段数。
  • 通过设置viewPager.setoffscreenPageLimit(fragmentcount) 不起作用。
  • 在添加片段的地方发布您的 MainActivity 代码

标签: android android-fragments android-viewpager android-tablayout


【解决方案1】:

ViewPager的默认行为,一次只保存两个片段,如果你想一直加载所有片段,那么你应该使用setOffscreenPageLimit(),设置要显示的查看分页器项目的最大限制。之后您的片段不会被刷新。

你重写这个 setUserVisibleHint() 方法删除这个方法并在 onViewCreated() 方法中调用 loadData() 数据, 因为 setUserVisibleHint() 每次在您的片段出现在屏幕上时都会调用。

viewPager.setOffscreenPageLimit(MAX_FRAGMENT);

【讨论】:

  • 您所说的是正确的,但它会加载所有选项卡的数据。我不想要的。
【解决方案2】:

正如@Mohit Suthar 所说,它的 ViewPager 的默认行为,它一次只包含两个片段,因此您可以按如下方式进行更改

viewPager.setOffscreenPageLimit(1);

viewPager.setOffscreenPageLimit(FragmentCount);  //apply limit of how many you take fragment to prevent re create View

【讨论】:

    【解决方案3】:

    终于解决了问题。 只需要设置isStarted = false;isVisible = false; 就可以了。谢谢大家帮助我。

    set `isStarted = false;` and `isVisible = false;` inside `loadData();` 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-24
      • 2016-01-04
      • 1970-01-01
      相关资源
      最近更新 更多