在android中以编程方式更改字符串资源

时间:2014-04-03 18:39:44

标签: android string textview

所以我正在制作一个有很多字符串的应用程序。
我正在尝试使用不同的字符串打开相同的布局(字符串填充布局)。
所以我有一个名为opna0,opna1,opna2 ......的字符串。当你按一个按钮来访问字符串时,一个数字被传递给处理布局的类,我希望该类获取该数字,将其添加到opna并获得该追索权。
因此,如果我按下3号按钮,我希望textview获得资源

        "@strings/opna3"

但我不知道怎么做,所以我想知道是否有人得到答案?

4 个答案:

答案 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设置字符串,而是在运行时以编程方式设置。