我有偏好,你可以启用/禁用什么项目将显示在菜单上。一共有17项。我在values/arrays.xml中创建了一个字符串数组,为这17个项目中的每一个都设置了标题。
我有preferences.xml,其中有我的首选项文件的布局,我想从字符串数组中引用一个项目作为标题。
我该怎么做呢?
在Android开发人员引用中,我看到了如何使用XML引用单个字符串,但没有看到如何从XML中的数组资源引用字符串。
我有偏好,你可以启用/禁用什么项目将显示在菜单上。一共有17项。我在values/arrays.xml中创建了一个字符串数组,为这17个项目中的每一个都设置了标题。
我有preferences.xml,其中有我的首选项文件的布局,我想从字符串数组中引用一个项目作为标题。
我该怎么做呢?
在Android开发人员引用中,我看到了如何使用XML引用单个字符串,但没有看到如何从XML中的数组资源引用字符串。
当前回答
简而言之:我不认为你可以,但似乎有一个变通办法:。
如果你看看这里的Android资源:
http://developer.android.com/guide/topics/resources/string-resource.html
您可以看到,在数组部分(至少是字符串数组)下,“RESOURCE REFERENCE”(从XML中获得)没有指定处理单个项的方法。你甚至可以尝试在XML中使用“@array/yourarrayhere”。我知道在设计阶段你会得到第一项。但是如果你想用,比如说……当然是第二个。
然而,有一个技巧你可以做。在这里看到的:
在XML数组中引用XML字符串(Android)
你可以通过在数组的定义中寻址独立的字符串来“欺骗”(不是真的)数组定义。例如,在你的strings.xml中:
<string name="earth">Earth</string>
<string name="moon">Moon</string>
<string-array name="system">
<item>@string/earth</item>
<item>@string/moon</item>
</string-array>
通过使用这个,你可以使用“@string/earth”和“@string/moon”通常在你的“android:text”和“android:title”XML字段,但你不会失去使用数组定义的能力,无论你打算在第一个地方。
好像在我的月蚀上有用。你为什么不试着告诉我们它是否有效?: -)
其他回答
也许这个会有帮助:
String[] some_array = getResources().getStringArray(R.array.your_string_array)
所以你得到一个String[]形式的数组列表,然后选择任意i, some_array[i]。
更好的选择是将资源返回的数组作为数组使用, 意义:
getResources () .getStringArray (R.array.your_array)[位置]
这是其他提到的方法的一种捷径,但以你想要的方式工作。否则,Android不会为基于XML的数组提供直接的XML索引。
答案很容易实现。
String[] arrayName = getResources().getStringArray(R.array.your_string_array);
现在你可以通过索引(假设第i个索引)访问数组的任何元素,然后你可以通过arrayName[i]访问它
我希望你能理解这一点
另一种方法是在strings.xml中定义一个资源数组,如下所示。
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE resources [
<!ENTITY supportDefaultSelection "Choose your issue">
<!ENTITY issueOption1 "Support">
<!ENTITY issueOption2 "Feedback">
<!ENTITY issueOption3 "Help">
]>
然后使用上述资源定义一个字符串数组
<string-array name="support_issues_array">
<item>&supportDefaultSelection;</item>
<item>&issueOption1;</item>
<item>&issueOption2;</item>
<item>&issueOption3;</item>
</string-array>
您也可以将相同的字符串引用到其他xml中,保持DRY的完整性。 我认为这样做的好处是,更改一个值就会影响代码中的所有引用。
简而言之:我不认为你可以,但似乎有一个变通办法:。
如果你看看这里的Android资源:
http://developer.android.com/guide/topics/resources/string-resource.html
您可以看到,在数组部分(至少是字符串数组)下,“RESOURCE REFERENCE”(从XML中获得)没有指定处理单个项的方法。你甚至可以尝试在XML中使用“@array/yourarrayhere”。我知道在设计阶段你会得到第一项。但是如果你想用,比如说……当然是第二个。
然而,有一个技巧你可以做。在这里看到的:
在XML数组中引用XML字符串(Android)
你可以通过在数组的定义中寻址独立的字符串来“欺骗”(不是真的)数组定义。例如,在你的strings.xml中:
<string name="earth">Earth</string>
<string name="moon">Moon</string>
<string-array name="system">
<item>@string/earth</item>
<item>@string/moon</item>
</string-array>
通过使用这个,你可以使用“@string/earth”和“@string/moon”通常在你的“android:text”和“android:title”XML字段,但你不会失去使用数组定义的能力,无论你打算在第一个地方。
好像在我的月蚀上有用。你为什么不试着告诉我们它是否有效?: -)