在 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();`
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();`