在 Tablayout 中,我添加了一些选项卡,当我在选项卡片段之间切换时,它会刷新其数据吗?为什么?

In Tablayout I have added some tab and in that when I am switching between the tabs fragment refreshes its data? Why?

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();
    }
}

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

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

需要帮助吗? 谢谢

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

viewPager.setOffscreenPageLimit(1);

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

它的默认行为 ViewPager,它一次只包含两个片段,如果你想一直加载所有片段,那么你应该使用 setOffscreenPageLimit(),设置你想显示的视图分页项目的最大值。之后您的片段不会被刷新。

你覆盖这个setUserVisibleHint()方法删除这个方法并在onViewCreated()方法中调用loadData()数据, 因为 setUserVisibleHint() 每次片段在 screen.

上时调用
viewPager.setOffscreenPageLimit(MAX_FRAGMENT);

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

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