Android资源获取字符串名称" dynamicaly"

时间:2015-02-18 12:13:39

标签: android string android-resources

我有2个活动,一个带有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按钮a&#34; haai&#34; string被传递给第二个活动,我计划做一些事情,比如&#34; info_title _&#34; + string来获取相应的字符串。但由于需要将其检索为R.string.info_title_haai,因此无法正常工作。

在Android中这样的事情是否可行?

使用Android Studio,为Jellybean及以上版本构建。

3 个答案:

答案 0 :(得分:4)

我用这个:

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

Here您有更多信息

答案 1 :(得分:2)

您可以使用某种类似的包装方法(未经测试):

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的匹配,将获得值 - 然后您可以传入任何您喜欢的内容。

答案 2 :(得分:1)

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

如果这个表会变得更大,我认为通过在您的应用程序中打包一个小数据库会更好。