Java Android-动态加载片段(ViewPager)
在settngs existed复选框中,如果选中,则不能加载特定片段。我只有4个片段,我使用FragmentStatePagerAdapter来显示它们Java Android-动态加载片段(ViewPager),java,android,android-fragments,Java,Android,Android Fragments,在settngs existed复选框中,如果选中,则不能加载特定片段。我只有4个片段,我使用FragmentStatePagerAdapter来显示它们 public class TabPagerAdapter extends FragmentStatePagerAdapter { public TabPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem
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;
}
}
如图所示,哪些片段不只是签入设置?我得到值(true of false(Check或Uncheck)片段,但如何不显示此片段,我不知道。首先全局保存所有检查按钮状态(即在共享首选项中,如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;
}
您必须调整
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;
}
public int getCount(){
int-cnt=0;
对于(int i=0;i<4;i++){
if(shouldShowFragment(i))cnt++;
}
返回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;
}
公共片段getItem(int位置){
int cnt=-1;
对于(int i=0;i<4;i++){
if(shouldShowFragment(i))cnt++;
如果(cnt==位置){
开关(一){
案例0:返回新片段_One();
案例1:返回新片段_Two();
案例2:返回新片段_Three();
案例3:返回新片段_Four();
}
}
}
返回null;
}