[英]Java Android - Dynamic load fragment (ViewPager)
在settngs existed复选框中,如果选中该复选框,则不得加载特定片段。 我只有4个片段,我使用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;
}
}
作为显示片段,不仅要检查设置? 我得到了价值(假(检查或取消检查)为假的片段的真值,但我不知道如何不显示该片段。
您必须调整getItem()
方法以及getCount()
方法。
假设您有一个方法shouldShowFragment(int fragmentNumber)
,它告诉我给定的片段号(从0到3),是否应该显示(取决于设置)。
现在,像这样实现getCount()以返回应该显示的片段数:
public int getCount() {
int cnt = 0;
for (int i = 0; i < 4; i++) {
if (shouldShowFragment(i)) cnt++;
}
return cnt;
}
并像这样实现getItem(),以将未显示的片段考虑在内:
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;
}
首先,全局保存所有检查按钮的状态(例如,在共享首选项中,如btn1.setChecked == true / false),并且在上面的代码中,如下所示:
@Override
public Fragment getItem(int i) {
switch (i) {
case 0:
if(btn0.isChecked == true)
return new Fragment_One();
case 1:
if(btn1.isChecked == true)
return new Fragment_Two();
case 2:
if(btn2.isChecked == true)
return new Fragment_Three();
case 3:
if(btn3.isChecked == true)
return new Fragment_Four();
}
return null;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.