2013-07-08 89 views
0

我終於趕上了Android 4.0+世界並將我的活動切換爲片段。我正在實施滑動視圖樣式選項卡,並且需要能夠基於我傳入活動的額外功能禁用選項卡。我以前的做法是這樣的,但我似乎無法弄清楚如何用滑動視圖來做到這一點。隱藏滑動視圖上的標籤(片段)?

tabHost.getTabWidget().getChildAt(1).setVisibility(View.GONE); 

tabHost不再適用。現在我有一個FragmentPagerAdapter和ViewPager,但不知道如何使用它們來禁用該選項卡。提前感謝任何指針!

回答

0

我設法確定如何做到這一點,但我不知道這是最好的方法。我必須做的是將一個布爾值傳遞給我的FragmentPagerAdapter實現,並且只允許在搜索模式下創建一個片段。

/** 
* A {@link FragmentPagerAdapter} that returns a fragment corresponding to 
* one of the sections/tabs/pages. 
*/ 
public class SectionsPagerAdapter extends FragmentPagerAdapter { 

    boolean isSearching = false; 

    public SectionsPagerAdapter(FragmentManager fm, boolean isSearching) { 
     super(fm); 
     this.isSearching = isSearching; 
    } 

    @Override 
    public Fragment getItem(int position) { 
     // getItem is called to instantiate the fragment for the given page. 

     Fragment fragment = null; 

     switch (position) { 

     case 0: 
      fragment = new UserGeneralFragment(); 
      break; 

     case 1: 
      if (!isSearching) fragment = new CommentListFragment(); 
      break; 
     } 

     return fragment;    
    } 

    @Override 
    public int getCount() { 
     if (!isSearching) return 2; 
     else return 1; 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     Locale l = Locale.getDefault(); 
     switch (position) { 
     case 0: 
      return getString(R.string.activity_user_tab_general).toUpperCase(l); 
     case 1: 
      if (!isSearching) return getString(R.string.activity_user_tab_comments).toUpperCase(l); 
      break; 
     } 
     return null; 
    } 
}