1

Googleのコードでわかるように、ハードコーディングされた関数で TAB タイトルを設定します。

@Override
public CharSequence getPageTitle(int position) {
    return "OBJECT " + (position + 1);
}

しかし、XML ファイルの文字列を使用して、TABS をローカリゼーション/言語に依存させる必要があります。これなどを試しましたが、解決方法がわかりません。「タイプ Context から非静的メソッド getString(int) への静的参照を作成できない」ため、これは機能しません。どんな助けでも大歓迎です。

String [] titlesArray = new String []{ getString(R.string.TAB1), getString(R.string.TAB2), getString(R.string.TAB3), getString(R.string.TAB4), getString(R.string.TAB5), getString(R.string.TAB6)};

@Override
public CharSequence getPageTitle(int position) {
    return titlesArray [position];
}

解決策: STATIC コンテキストを使用しない方法を見つけます。可能です。

4

3 に答える 3

0

Switch..Case.. ブロックを使うべきだと思います

    @Override
    public CharSequence getPageTitle(int position) {

        Resources res = context.getResources();
        switch (position) {
        case 0:
            return res.getString(R.string.title_section1).toUpperCase();

        case 1:
            return res.getString(R.string.title_section2).toUpperCase();

        case 2:
            return res.getString(R.string.title_section3).toUpperCase();

        case 3:
            return res.getString(R.string.title_section4).toUpperCase();

        case 4:
            return res.getString(R.string.title_section5).toUpperCase();

        }
        return null;
    }
于 2013-09-07T12:19:03.457 に答える
0

使わない理由

        @Override
    public CharSequence getPageTitle(int position) {
        Locale l = Locale.getDefault();
        switch (position) {
            case 0:
                return getString(R.string.TAB1);
            case 1:
                return getString(R.string.TAB2);
            case 2:
                return getString(R.string.TAB3);
            case 3:
                return getString(R.string.TAB4);
            case 4:
                return getString(R.string.TAB5);
            ...AND SO ON...
        }
        return null;
    }
}
于 2013-09-07T12:19:55.230 に答える
0

遅すぎることはわかっていますが、実用的な解決策を見つけました

このように PagerAdapter を変更します

public class SectionsPagerAdapter extends FragmentPagerAdapter {

    Activity activity;
    static Context context;

    static Resources res = null;
    static String[] CONTENT = null;





    public SectionsPagerAdapter(FragmentManager fm, Activity activity, Context context) {
        super(fm);
        this.activity = activity;
        this.context = context;
        res = context.getResources();
        CONTENT = res.getStringArray(R.array.my_string_array);

    }

    @Override
    public Fragment getItem(int position) {
        switch (position) {
            case 0: {

                return new PlaceHolderSignInFragment();
            }
            case 1: {
                return new PlaceHolderSignUpFragment();
            }
        }
        return null;
    }

    @Override
    public int getCount() {
        return SectionsPagerAdapter.CONTENT.length;
    }

    @Override
    public CharSequence getPageTitle(int position) {

        return SectionsPagerAdapter.CONTENT[position];
    }

    public String[] getTitles() {
        return SectionsPagerAdapter.CONTENT;
    }
}

将来のローンチに必要な場合に備えて!!!!

于 2015-03-05T14:33:59.780 に答える