在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中,我添加了一些选项卡,并且在切换选项卡片段时刷新其数据?为什么?
需要帮助? 感谢
终于解决了这个问题。 只需要设置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);
您所说的内容是正确的,但它会加载所有选项卡的数据。我不想要。 –
如何曼尼片段是你添加到viewPager? –
只有我添加了1个片段,标签是4.所有查询在片段中都是相似的,只有标题是不同的,所以我重复使用了相同的片段。 –
即使您重复使用片段,也会创建不同的实例。设置offScreenPageLimit为片段数。 –