1

我将这个数组放入我的资源文件中:

<array name="xml_data">
    <item>@xml/data1</item>
    <item>@xml/data2</item>
    <item>@xml/data3</item>
    <item>@xml/data4</item>
</array>

通常,它与普通数组没有什么不同,但是当进入代码时,这不起作用......

final Resources res = getResources();
int[] xmlList = res.getIntArray(R.array.xml_data);
Log.i(TAG, "Data found: "+ xmlList.length);
for (int i = 0; i < xmlList.length; i++) {
    Log.i(TAG, "Extract xml id="+ xmlList[i].);
}

这是在 logcat 中获得的输出:

Data found: 4
Extract xml id=0
Extract xml id=0
Extract xml id=0
Extract xml id=0

你能帮我解决这个问题吗?

谢谢。

4

2 回答 2

0

像这样使用你的 TypedArray:

TypedArray mTypedArray = getResources().getTypedArray(R.array.xml_data);

然后,检索您的资源 ID,如下所示:

int id = mTypedArray.getResourceId(position, defaultResourceId);

当我使用它时,它是一个字符串 ID 数组,所以我跟着它:

getString(id)

于 2014-03-31T00:19:32.827 回答
0

为方便起见,举个例子:

我在示例 xml 文件中有一个简单的“字符串”数组(不是 int)。让我们称之为array.xml

<?xml version="1.0" encoding="utf-8"?>  
<resources>
<string-array name="doing">
    <item>1</item>
    <item>2/item>
    <item>3/item>
    <item>3</item>
</string-array>
</resources>  

现在在我的 Java 文件中,我在 OnCreate() 函数中按如下方式调用它并且它起作用了:

String[] xmlList = getResources().getStringArray(R.array.doing);
int first = Integer.parseInt(xmlList[0]);
Log.d("test", "1st string is: " + first);

PS:我没有测试过代码,但我希望你明白逻辑。一切顺利。希望能帮助到你。

于 2013-03-17T12:57:52.723 回答