0

我终于赶上了 Android 4.0+ 世界并将我的活动切换到片段。我正在实现滑动视图样式选项卡,并且需要能够根据我传递给活动的额外内容来禁用选项卡。我这样做的旧方法是这样,但我似乎无法弄清楚如何使用滑动视图来做到这一点。

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

tabHost 不再适用。现在我有一个 FragmentPagerAdapter 和 ViewPager,但不知道如何使用它们来禁用选项卡。提前感谢您的任何指点!

4

1 回答 1

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;
    }
}
于 2013-07-08T22:44:06.740 回答