滑动视图选项卡 - 如何正确设置标题?

时间:2013-09-07 12:05:30

标签: android tabs views swipe

正如您在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上下文的方法。这是可能的。

3 个答案:

答案 0 :(得分:0)

我认为你应该使用Switch..Case .. block

    @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;
    }

答案 1 :(得分: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;
    }
}

答案 2 :(得分: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;
    }
}

如果您需要将来发布!!!!