Android:无法在页面适配器中的ID中找到资源(字符串数组)

时间:2018-08-18 20:29:05

标签: android resources

我制作了一个应用,其中有一个ViewPager与我制作的PagerAdapter的子类一起工作,一切正常,但是一些字符串经过了硬编码,因此我决定将它们放入资源中,但这带来了一些问题,即错误当我尝试为我的PagerAdapter的“ getPageTitle”方法检索字符串数组时显示。

错误:

  

android.content.res.Resources $ NotFoundException:字符串数组资源ID#0x7f030002

我的PagerAdapter中的getPageTitle:

@Nullable
@Override
public CharSequence getPageTitle(int position) {
    String[] tabTitles = Resources.getSystem().getStringArray(R.array.days_short_names);
    return tabTitles[position];
}

但是资源确实存在,这里是在string_arrays.xml中:

<string-array name="days_short_names">
    <item>@string/monday_short</item>
    <item>@string/tuesday_short</item>
    <item>@string/wednesday_short</item>
    <item>@string/thursday_short</item>
    <item>@string/friday_short</item>
    <item>@string/saturday_short</item>
    <item>@string/sunday_short</item>
</string-array>

加上strings.xml中的字符串:

<string name="monday_short">Mon</string>
<string name="tuesday_short">Tue</string>
<string name="wednesday_short">Wed</string>
<string name="thursday_short">Thu</string>
<string name="friday_short">Fri</string>
<string name="saturday_short">Sat</string>
<string name="sunday_short">Sun</string>

我什至检查了R类,它在那里,所以我对它为什么不起作用一无所知。

在R.java中:

public static final class array {
    public static final int context_menu_actions=0x7f030000;
    public static final int days_long_names=0x7f030001;
    public static final int days_short_names=0x7f030002;
}

1 个答案:

答案 0 :(得分:1)

我猜您正在尝试从另一个非活动类访问数组,因此您使用:Resources.getSystem().getStringArray(R.array.days_short_names);
如果可能的话,获取活动的上下文,或者从getApplicationContext()作为类的构造函数的参数,并使用:

context.getResources().getStringArray(R.array.days_short_names);