gpt4 book ai didi

java - 需要将字符串资源转换为 View 页面中的字符串

转载 作者:行者123 更新时间:2023-12-02 02:54:55 24 4
gpt4 key购买 nike

所以我尝试了各种解决方案来解决这个问题。这是我开始的示例:

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:无法启动 Activity ComponentInfo{com.example.android.myapp/com.example.android.myapp.MainActivity}:android.content.res.Resources$NotFoundException:字符串资源 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:无法启动 Activity ComponentInfo {com.example.android.myapp/com.example.android.myapp.MainActivity}:java.lang.NullPointerException:尝试调用虚拟方法'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];
}

它运行时没有错误,但只是导致选项卡标题空白。

也许我只是一个十足的菜鸟,错过了一些简单的东西,但我很感激你们能提供的任何帮助。

最佳答案

看看这些代码行:

private String tabTitles[] = new String[] {mOne,mTwo,mThree,mFour};
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)
};

问题是,这些数组是用 mOne、mTwo、mThree 和 mFour 的空(实际上是 null)值初始化的。只有在那之后,您才可以在构造函数中为它们分配值。但这不会更新您的数组。看这个例子:

class SimpleFragmentPagerAdapter extends FragmentPagerAdapter {

private Context mContext;
private String tabTitles[];

SimpleFragmentPagerAdapter(FragmentManager fm, Context context) {
super(fm);
this.mContext = context;
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];
}
}

我在这里所做的是说“嘿,Java,有一个名为 tabTitles 的字符串数组,它未初始化(它具有空值)。”然后,在构造函数中,“Hey Java,将这些值分配给名为 tabTitles 的数组”。现在,当调用 getPageTitle(intposition) 时,

关于java - 需要将字符串资源转换为 View 页面中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43264599/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com