所以我尝试了各种解决方案来解决这个问题。这里是我开始的一个例子:需要将字符串资源转换为viewpager中的字符串
class SimpleFragmentPagerAdapter extends FragmentPagerAdapter {
SimpleFragmentPagerAdapter(FragmentManager fm) {
super(fm);
}
private String tabTitles[] = new String[] {"one","two","three","four"};
@Override
public CharSequence getPageTitle(int position) {
return tabTitles[position];
}
然后我尝试以下,以获得从string.xml相同字符串:
class SimpleFragmentPagerAdapter extends FragmentPagerAdapter {
SimpleFragmentPagerAdapter(FragmentManager fm) {
super(fm);
}
private String tabTitles[] = new String[] {Resources.getSystem().getString(R.string.one),
Resources.getSystem().getString(R.string.two),
Resources.getSystem().getString(R.string.three),
Resources.getSystem().getString(R.string.four)};
@Override
public CharSequence getPageTitle(int position) {
return tabTitles[position];
}
但我收到此错误: 致命异常:主要 进程:com.example.android.myapp,PID:9923 java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.android.myapp/com.example.android.myapp.MainActivity}:android.content .res.Resources $ NotFoundException:String res乌尔斯河ID#0x7f070017
因为我知道琴弦存在,我在我的代码,我认为这可能需要上下文其他地区使用过,所以我通过适配器通过MainActivity.this和尝试:
class SimpleFragmentPagerAdapter extends FragmentPagerAdapter {
private Context mContext;
SimpleFragmentPagerAdapter(FragmentManager fm, Context context) {
super(fm);
this.mContext = context;
}
private String tabTitles[] = new String[] {mContext.getResources().getString(R.string.one),
mContext.getResources().getString(R.string.two),
mContext.getResources().getString(R.string.three),
mContext.getResources().getString(R.string.four)};
@Override
public CharSequence getPageTitle(int position) {
return tabTitles[position];
}
而接收此错误: 致命异常:主 工艺:com.example.android.myapp,PID:5387 了java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.android.myapp /com.example.android.myapp.MainActivity}:java.lang.NullPointerException:尝试t ø调用虚拟方法android.content.res.Resources android.content.Context.getResources()'上的空对象引用
最后,我试图的资源转换为字符串在MainActivity内,并通过将它们传递到适配器:
class SimpleFragmentPagerAdapter extends FragmentPagerAdapter {
private String mOne;
private String mTwo;
private String mThree;
private String mFour;
SimpleFragmentPagerAdapter(FragmentManager fm, one, two, three, four) {
super(fm);
mOne = one;
mTwo = two;
mThree = three;
mFour = four;
}
private String tabTitles[] = new String[] {mOne,mTwo,mThree,mFour};
@Override
public CharSequence getPageTitle(int position) {
return tabTitles[position];
}
它运行没有错误,但只是导致空白标签标题。
也许我只是在这里做一个完整的菜鸟,想念一些简单的东西,但我会很感激你们可以提供的任何帮助。
你可以显示你在哪里实例化你的适配器并将其设置为你的Tablayout – buradd
我的回答对你有帮助吗?如果是,请将其标记为已接受的答案。 – MatusMak