在Tablayout中,我添加了一些选项卡,并且在切换选项卡片段时刷新其数据?为什么?

问题描述:

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它再次击中数据库并带来数据和显示。出现问题时,我回到tab1然后再次击中数据库并带来数据,并再次在tab1中设置数据,但其数据已被加载。我已经设置了viewPager.setOffscreenPageLimit(1);在Tablayout中,我添加了一些选项卡,并且在切换选项卡片段时刷新其数据?为什么?

需要帮助? 感谢

+0

如何曼尼片段是你添加到viewPager? –

+0

只有我添加了1个片段,标签是4.所有查询在片段中都是相似的,只有标题是不同的,所以我重复使用了相同的片段。 –

+0

即使您重复使用片段,也会创建不同的实例。设置offScreenPageLimit为片段数。 –

终于解决了这个问题。 只需要设置isStarted = false;isVisible = false;并且工作。谢谢你们帮助我。

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

由于@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()方法删除此方法,并调用loadData()数据onViewCreated()方法, 因为setUserVisibleHint()每次当你的片段屏幕时间通话。

viewPager.setOffscreenPageLimit(MAX_FRAGMENT); 
+0

您所说的内容是正确的,但它会加载所有选项卡的数据。我不想要。 –