簡體   English   中英

Java Android-動態負載片段(ViewPager)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM