0

ようやく Android 4.0+ の世界に追いつき、アクティビティをフラグメントに切り替えています。スワイプ ビュー スタイルのタブを実装しており、アクティビティに渡すエクストラに基づいてタブを無効にできる必要があります。これを行う私の古い方法はこれでしたが、スワイプビューでこれを行う方法がわかりません。

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

tabHost は適用されなくなりました。FragmentPagerAdapter と ViewPager がありますが、それらを使用してタブを無効にする方法がわかりません。ご指摘ありがとうございます。

4

1 に答える 1

0

これを行う方法を決定することはできましたが、それが最善の方法であるかどうかはわかりません。私がしなければならなかったのは、FragmentPagerAdapter の実装にブール値を渡し、検索モードの場合にのみ 1 つのフラグメントを作成できるようにすることでした。

    /**
 * 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 に答える