是否可以替换R.string末尾的名称。用变量调用

时间:2015-09-09 11:58:14

标签: java android

对不起,诺布在这里所以真的不懂术语。我想要做的是替换像这样的命令的结尾

((TextView) findViewById(R.id.rr)).setText(R.string.Constitution);

更动态的东西,用一个变量代替构造一词,这是对strings.xml资源中字符串的引用。这是我认为可行的方式,但它是

    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

    String textFromSpinner = spinner.getSelectedItem().toString();

    if (textFromSpinner.contains(" ")){
        textFromSpinner = textFromSpinner.replaceAll(" ", "_");
    }

    String valueToGet = "R.string" + textFromSpinner;

    ((TextView) findViewById(R.id.rr)).setText(valueToGet);

}

拒绝了,我也尝试了一些Android Studio立即拒绝的变体,这些变体显示了我的红线。

请帮忙,也请你好心,因为我还在学习如何编码,所以我不知道是什么意思

4 个答案:

答案 0 :(得分:1)

您可以调用getResource().getIdentifier()方法在运行时按名称检索资源。检查一下:http://developer.android.com/reference/android/content/res/Resources.html#getIdentifier%28java.lang.String,%20java.lang.String,%20java.lang.String%29

答案 1 :(得分:1)

int stringId = context.getResources().getIdentifier(textFromSpinner, "string", context.getPackageName());

使用此行,您可以获取所需字符串资源的ID。然后,您可以将其传递给TextView

((TextView) findViewById(R.id.rr)).setText(stringId);

答案 2 :(得分:0)

<string name="hello_world">Hello %1$s</string>

替换@runtime

String str = "World";
str = String.format(getResources().getString(R.string.hello_world), str );

答案 3 :(得分:0)

 int searchId = getResources().getIdentifier(textFromSpinner, "string", this.getPackageName());
    if (searchId != 0){
        ((TextView) findViewById(R.id.rr)).setText(searchId);
    } else {
        ((TextView) findViewById(R.id.rr)).setText(R.string.Please_Select_Option);
    }