所以我正在制作一个有很多字符串的应用程序。
我正在尝试使用不同的字符串打开相同的布局(字符串填充布局)。
所以我有一个名为opna0,opna1,opna2 ......的字符串。当你按一个按钮来访问字符串时,一个数字被传递给处理布局的类,我希望该类获取该数字,将其添加到opna并获得该追索权。
因此,如果我按下3号按钮,我希望textview获得资源
"@strings/opna3"
但我不知道怎么做,所以我想知道是否有人得到答案?
答案 0 :(得分:3)
您可以做的最简单的事情是:
int stringId = getResources().getIdentifier("opna"+value, "string", getPackageName());
if (stringId > 0) {
yourTextView.setText(stringId);
}
getIdentifier()
返回给定资源名称的资源标识符。
答案 1 :(得分:0)
像这样使用字符串数组。使用资源加载
<string-array name="array_items">
<item name="item1">ONE</item>
<item name="item2">TWO</item>
<item name="item3">THREE</item>
</string-array>
加载字符串并设置文本取决于点击/索引
String[] items = getResources().getStringArray(R.array.array_items);
答案 2 :(得分:0)
您正在寻找: Resources getIdentifier
你可以看到像你这样的上一个问题的一个例子: Android, getting resource ID from string?
答案 3 :(得分:0)
一种选择是通过将资源ID存储在Map<Integer, Integer>
中来在运行时选择字符串。如下所示:
private Map<Integer, Integer> mStringMap;
{
mStringMap.put(0, R.string.opna0);
mStringMap.put(1, R.string.opna1);
mStringMap.put(2, R.string.opna2);
mStringMap.put(3, R.string.opna3);
...
}
private void setStringFromResource(int id){
if(mStringMap.containsKey(id)) mTextView.setText(mStringMap.get(id));
}
按下按钮时,将相应的整数值传递给setStringFromResource()
。此方法在mStringMap
中找到正确的资源,然后将TextView
的文本设置为该资源。您不会在布局xml中为TextView
设置字符串,而是在运行时以编程方式设置。