2014-05-17 147 views
0

在已存在的複選框中,如果選中,則不能加載特定片段。我只有4片段,我使用FragmentStatePagerAdapter來顯示它們。Java Android - 動態加載片段(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

你必須去適應你的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; 
} 
0

首先保存所有檢查按鈕狀態全局(即共享喜好btn1.setChecked = =真/假等等),並在上面的代碼做象下面這樣: - 。

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