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并在tab1中显示时,当我点击tab2它再次点击数据库并带来数据和显示。问题出现在我回到tab1然后它再次命中数据库并带来数据并再次在tab1中设置数据但其数据已经加载。
我已经设置了viewPager.setOffscreenPageLimit(1);
。
需要帮助? 感谢
答案 0 :(得分:1)
ViewPager 的默认行为,一次只保存两个片段,如果要一直加载所有片段,那么你应该选择 setOffscreenPageLimit(),设置要显示的视图寻呼机项目限制的最大值。之后你的片段没有被刷新。
重写此 setUserVisibleHint()方法删除此方法并在 onViewCreated()方法中调用loadData()数据, 因为 setUserVisibleHint()每次片段在屏幕时都会调用。
viewPager.setOffscreenPageLimit(MAX_FRAGMENT);
答案 1 :(得分:0)
正如@Mohit Suthar所说的ViewPager的默认行为,它一次只保留两个片段,所以你可以改变如下
viewPager.setOffscreenPageLimit(1);
到
viewPager.setOffscreenPageLimit(FragmentCount); //apply limit of how many you take fragment to prevent re create View
答案 2 :(得分:0)
最终解决了问题。
只需要设置isStarted = false;
和isVisible = false;
即可。谢谢大家帮助我。
set `isStarted = false;` and `isVisible = false;` inside `loadData();`