2014-05-17 6 views
0

settngs 있음 확인란에 체크 표시가되어 있으면 특정 프래그먼트를로드하지 않아야합니다. 4 조각이 있고 FragmentStatePagerAdapter를 사용하여 표시합니다.자바 안드로이드 - 동적로드 조각 (ViewPager)

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; 
    } 

} 

조각 만 표시하면 설정을 확인할 수 있습니까? 나는 (선택하거나 선택 해제) 거짓 조각의 진정한 가치를 (얻을 수 있지만,이 조각을 표시하지 않는 방법, 나는 잘 모릅니다. 모든

답변

1

하는의 당신이 나에게 알려주는 방법 shouldShowFragment(int fragmentNumber)을 가정 해 봅시다 0에서 3까지의 주어진 프래그먼트 번호에 대해 표시할지 여부를 지정합니다 (설정에 따라 다름).

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()을

public int getCount() { 
    int cnt = 0; 
    for (int i = 0; i < 4; i++) { 
     if (shouldShowFragment(i)) cnt++; 
    } 
    return cnt; 
} 

및 구현 : 그래서 표시되어야 조각의 수를 반환하는 것처럼

지금은 getCount()를 구현

0

먼저 전 세계적으로 모든 체크 버튼의 상태를 저장합니다 (예 : btn1.setChecked = 같은 공유 환경 설정에서 = 어떤 거짓)과 위의 코드에서/사실은 다음과 같이 수행합니다 -.

당신은 당신의 getItem() 방법뿐만 아니라 getCount() 방법을 적응해야
@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; 
    }