正如您在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上下文的方法。这是可能的。
答案 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;
}
}
如果您需要将来发布!!!!