Android资源获取字符串名称“dynamicali”

Android资源获取字符串名称“dynamicali”,android,string,android-resources,Android,String,Android Resources,我有两个活动,一个是带有ID的按钮。根据您单击的按钮,ID将通过其意图传递给第二个活动。然后,在第二个活动中,我希望根据该按钮的id检索字符串值。我将字符串值命名如下: <resources> <string name="app_name">DataApp</string> <string name="info_title_zalm">Zalm</string> <string name="info_wei

我有两个活动,一个是带有ID的按钮。根据您单击的按钮,ID将通过其意图传递给第二个活动。然后,在第二个活动中,我希望根据该按钮的id检索字符串值。我将字符串值命名如下:

<resources>
    <string name="app_name">DataApp</string>
    <string name="info_title_zalm">Zalm</string>
    <string name="info_weight_zalm">1kg</string>
    <string name="info_origin_zalm">Atlantische Oceaan</string>
    <string name="info_title_haai">Haai</string>
    <string name="info_weight_haai">200kg</string>
    <string name="info_origin_haai">Atlantische Oceaan, zoet water uitzonderingen</string>
</resources>
因此字符串的名称有一个共享的开头,例如info_title_zalm和info_title_haai。当单击haai按钮时,haai字符串被传递到第二个活动,在那里我计划执行一些操作,例如info_title_uu+string来获取相应的字符串。但是因为需要以R.string.info\u title\u haai的形式检索它,所以这不起作用

这样的事情在安卓系统中可能发生吗

使用Android Studio,为Jellybean和更高版本构建。

我使用这个:

int resId = getResources().getIdentifier("info_title_" + string, "string", getPackageName());
String s = getString(resId);

您有更多信息

您可以使用某种包装方法,如未经测试的:

private String getStringResourceByName(String myResourceName) {
    String packageName = getPackageName();
    int resId = getResources()
            .getIdentifier(myResourceName, "string", packageName);
    if (resId == 0) {
        return myResourceName;
    } else {
        return getString(resId);
    }
}

它将根据与myResourceName的匹配情况获取值-然后您可以传入任何您喜欢的内容。

如果您只有两个选项,您可以通过intent传递您需要的所有资源的ID


如果这个表会变大,我认为最好在应用程序中打包一个小数据库

您可以传递int id R.string.info\u title\u haai而不是值。因此,第二个活动可以通过getStringextraIDoh wait获得该值。您想知道字符串名称吗?为了什么?但是当需要依赖于按下哪个按钮时,我如何构建R.string.info\u title\u haai?我想这样做,按下按钮决定添加哪个后缀和显示哪个字符串。你是对的,如果这会更大,我可能需要使用一个小的db,但目前我只是用少量测试一个概念。