我有一个string.xml文件,其中包含text_1 ... text_100 现在我想选择这些的随机文本并将其显示在TextView上。 我试着用
String text = "text_";
int randomNum = rand.nextInt((100 + 1) + 1;
text = text + String.valueOf(randomNum);
txt.setText(getString(R.string.text);
所以现在它不起作用,因为字符串文件中没有“text”...
也许有些建议?
答案 0 :(得分:0)
你可以使用它,但这是不好的做法:
public static int getResId(String resName, Class<?> c) {
try {
Field idField = c.getDeclaredField(resName);
return idField.getInt(idField);
} catch (Exception e) {
e.printStackTrace();
return -1;
}
}
在你的情况下:
getResId(text, String.class);
更好的选择是在xml中创建字符串数组:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="planets_array">
<item>Mercury</item>
<item>Venus</item>
<item>Earth</item>
<item>Mars</item>
</string-array>
</resources>
然后:
String[] planets = res.getStringArray(R.array.planets_array);
int randomNum = rand.nextInt(planets.size() - 1);
txt.setText(planets[randomNum]);
答案 1 :(得分:0)
你不会想出像这样的int id。由于您知道资源名称,因此请使用Resources.class
:getIdentifier(resIdName, resTypeName, packageName)
由于资源属于Context,您可以:
String text = "text_";
int randomNum = rand.nextInt((100 + 1) + 1;
text = text + String.valueOf(randomNum);
int textId = getResources().getIdentifier(text, "string", getPackageName());
txt.setText(getString(textId));
您的字符串资源中有该项的资源ID。