尝试创建更紧凑的代码。 我有一组字符串:
<string name = "A1">Some text</string>
<string name = "A2">More text</string>
...
<string name = "Z1">Different text</string>
所有字母的值都是1到4.我需要根据条件在TextView中拍摄。所有条件都保存在数组uan []
中if (uan[0] > 10 && uan[0] < 20) {
textView.setText(getString(R.string.A1));
} else if (uan[0]>20 && uan[0]<40) {
textView.setText(getString(R.string.A1));
} else if ...
我不想创建LONG-LONG条件并尝试创建循环。存储在其他数组conditionsType []
中的所有类型的条件String varAppend;
for (int i=0; i>uan.lenght; i++) {
if (uan[i] >10 && uan [i] <20 ) {
varAppend = "R.string."+varAppend[i]+uan[i]; /*here logical error, but I think to solve it */
textView.setText(getString(varAppend)); /*Code doesn't work*/
}
}
但我不知道如何通过变量从资源中获取字符串。
答案 0 :(得分:1)
也许您应该尝试使用字符串数组作为资源:
<array name="sample">
<item>A1</item>
<item>A2</item>
<item>A3</item>
<item>A4</item>
...
<item>Z4</item>
</array>
之后只需使用以下代码访问数组
String[] array = getResources().getStringArray(R.array.sample);
答案 1 :(得分:0)
是的,你可以(虽然不鼓励它不起作用):)
http://steven.bitsetters.com/2007/11/27/accessing-android-resources-by-name-at-runtime/
只需按名称获取ID,然后通过它获取。
答案 2 :(得分:0)
varAppend必须是
中的inttextView.setText(getString(varAppend))
String android.content.res.Resources.getString(int id)抛出NotFoundException
public String getString(int id)
在API级别1中添加返回与a关联的字符串值 特定资源ID。它将被删除任何样式的文本 信息。
参数:
id 由aapt工具生成的所需资源标识符。此整数对包,类型和资源条目进行编码。该 值0是无效标识符
尝试使用
<强> getResources()。则getIdentifier()强>
但是文档说:不鼓励使用此功能。按标识符检索资源比按名称检索资源要高效得多。