首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android从value获取String资源Id

Android从value获取String资源Id
EN

Stack Overflow用户
提问于 2021-08-28 19:37:58
回答 1查看 167关注 0票数 0

是否可以从字符串值中获取在strings.xml中指定的字符串资源Id?

代码语言:javascript
复制
    <string name="text1">Dummy Text</string>

我知道如何从字符串值(虚拟文本)中获取资源Id (text1),但我想从字符串值(虚拟文本)中获取资源Id (text1)?下面是我获取虚拟文本的方法:但是我想从虚拟文本值中获取text1(资源Id)?

代码语言:javascript
复制
    context.resources.getIdentifier("text1","string",BuildConfig.APPLICATION_ID)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-29 07:51:08

我认为您正在寻找的是使用反射的以下函数:

代码语言:javascript
复制
fun getStringResourceName(stringToSearch: String): String? {
     val fields: Array<Field> = R.string::class.java.fields
     for (field in fields) {
         val id = field.getInt(field)
         val str = resources.getString(id)
         if (str == stringToSearch) {
             return field.name
         }
    }
    return null
}

因此,通过调用getStringResourceName("Dummy Text"),该函数应该返回"text1“。

这个函数甚至可以稍微修改一下,返回对应于"Dummy Text“的资源id:

代码语言:javascript
复制
fun getStringResourceId(stringToSearch: String): Int {
    val fields: Array<Field> = R.string::class.java.fields
    for (field in fields) {
        val id = field.getInt(field)
        val str = resources.getString(id)
        if (str == stringToSearch) {
            return id
        }
    }
    return -1
}

因此,在本例中,通过调用getStringResourceId("Dummy Text"),您可以获得类似于2131886277的代码(后一个数字只是示例)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68967613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档