繁体   English   中英

Android资源“动态地”获取字符串名称

[英]Android resources getting string names “dynamicaly”

我有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按钮时,“ haai”字符串将传递到第二个活动,在该活动中,我计划执行诸如“ info_title _” +字符串之类的操作以获取相应的字符串。 但是由于需要将其检索为R.string.info_title_haai,因此无法正常工作。

在Android中有可能这样的事情吗?

使用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匹配项获取值-然后您可以传递任何您喜欢的内容。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM