在设置中存在复选框,如果选中,则不得加载特定 fragment 。我只有 4 个 fragment ,我使用 FragmentStatePagerAdapter 来显示它们。
public class TabPagerAdapter extends FragmentStatePagerAdapter {
public TabPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int i) {
switch (i) {
case 0:
return new Fragment_One();
case 1:
return new Fragment_Two();
case 2:
return new Fragment_Three();
case 3:
return new Fragment_Four();
}
return null;
}
@Override
public int getCount() {
return 4;
}
}
作为显示 fragment ,哪些不是只能在设置中检查?我得到值(true 或 false(选中或取消选中) fragment ,但如何不显示此 fragment ,我不知道。
最佳答案
您必须调整 getItem()
方法以及 getCount()
方法。
假设您有一个方法 shouldShowFragment(intfragmentNumber)
,它告诉我对于从 0 到 3 的给定 fragment 编号,是否应该显示它(取决于设置)。
现在,像这样实现 getCount() 以返回应显示的 fragment 数:
public int getCount() {
int cnt = 0;
for (int i = 0; i < 4; i++) {
if (shouldShowFragment(i)) cnt++;
}
return cnt;
}
并像这样实现 getItem() 以考虑不显示的 fragment :
public Fragment getItem(int position) {
int cnt = -1;
for (int i = 0; i < 4; i++) {
if (shouldShowFragment(i)) cnt++;
if (cnt == position) {
switch(i) {
case 0 : return new Fragment_One();
case 1 : return new Fragment_Two();
case 2 : return new Fragment_Three();
case 3 : return new Fragment_Four();
}
}
}
return null;
}
关于Java Android - 动态加载 fragment (ViewPager),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23709385/