无法从XML获取数组字符串资源

时间:2011-04-26 21:45:47

标签: android xml arrays

我的XML文件中有一个值列表,我想根据微调器选择来选择它。由于某种原因,使用数组字符串为微调器工作正常,值将填充到微调器。无论出于何种原因,我无法获取第二个数组的值来挽救我的生命,它们位于同一个文件中,没有我能找到的错误。以下是我试图抓住它们的方式:

String[] some_array = getResources().getStringArray(R.array.playerclassdesc_array);

微调器的填充方式不同(执行此部分时没有错误):

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
    this, R.array.playerclass_array, android.R.layout.simple_spinner_item);

我得到的错误是:

“04-26 21:41:35.305:ERROR / AndroidRuntime(514):引起:android.content.res.Resources $ NotFoundException:String array resource ID#0x7f050001”

直接指“getResources”行。有没有人知道为什么会发生这种情况?

编辑:这是xml文件(很简单)

<?xml version="1.0" encoding="UTF-8"?>
<resources>
    <string name="class_prompt">Choose a class</string>
    <string-array name="playerclass_array">
        <item>Assassin</item>
        <item>Paladin</item>
        <item>Pirate</item>
        <item>Hell Mage</item>
        <item>Winter Witch</item>
        <item>Shadow Walker</item>
        <item>Underthief</item>
        <item>Red Warrior</item>
        <item>Haru Norda</item>
    </string-array>
    <string-array name="playerclassdesc_array">
        <item>This is the Assassin</item>
        <item>This is the Paladin</item>
        <item>This is the Pirate</item>
        <item>This is the Hell Mage</item>
        <item>This is the Winter Witch</item>
        <item>This is the Shadow Walker</item>
        <item>This is the Underthief</item>
        <item>This is the Red Warrior</item>
        <item>This is the Haru Norda</item>
    </string-array>
</resources>

3 个答案:

答案 0 :(得分:11)

当我找到答案后,我讨厌它!

出于某种原因,Android没有正确地重新编译该阵列所在的XML文件,因此在更改名称,然后将其更改回来后,它现在可以正常工作。所以我的解决方案是我必须在数组所在的XML文件中进行一些编辑,因为它没有正确地重新编译,尽管Eclipse告诉我它是。

答案 1 :(得分:6)

我尝试在ArrayAdapter的构造函数中执行Cast,或者在ArrayAdapter中更改元素的类型。

ArrayAdapter<String> adapter = ArrayAdapter.createFromResource(
this, R.array.playerclass_array, android.R.layout.simple_spinner_item);

答案 2 :(得分:2)

我曾多次遇到过类似的问题。我发现使用Project | Eclipse中的Clean选项然后重建我的项目总能解决它们。这基本上就是你通过编辑XML文件所做的事情;您迫使Eclipse从XML文件重建其资源。