是否可以从字符串值中获取在strings.xml中指定的字符串资源Id?
<string name="text1">Dummy Text</string>我知道如何从字符串值(虚拟文本)中获取资源Id (text1),但我想从字符串值(虚拟文本)中获取资源Id (text1)?下面是我获取虚拟文本的方法:但是我想从虚拟文本值中获取text1(资源Id)?
context.resources.getIdentifier("text1","string",BuildConfig.APPLICATION_ID)发布于 2021-08-29 07:51:08
我认为您正在寻找的是使用反射的以下函数:
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:
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的代码(后一个数字只是示例)。
https://stackoverflow.com/questions/68967613
复制相似问题