You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android开发如何通过strings.xml中的字符串值获取对应String资源ID

问题解答

Android 系统没有提供官方的反向查找 API 直接通过字符串值获取对应的 string 资源 ID/资源名,你可以通过遍历所有 string 资源做匹配的方式实现该需求。

实现思路

  • 反射获取R.string类下所有的静态字段,每个字段的名称对应资源名(如示例中的text1),字段的 int 值对应资源 ID
  • 遍历每个字段,用 Context 拿到对应资源 ID 的字符串值,和你传入的目标字符串做匹配
  • 匹配成功后返回对应的资源 ID 和资源名

代码实现(Kotlin)

fun findStringResByValue(context: Context, targetString: String): Pair<Int, String>? {
    // 遍历R.string下的所有字符串资源
    val stringFields = R.string::class.java.declaredFields
    for (field in stringFields) {
        try {
            val resId = field.getInt(null)
            val resValue = context.getString(resId)
            if (resValue == targetString) {
                // 第一个返回值为资源ID的int值,第二个返回值为资源名(即你需要的text1)
                return Pair(resId, field.name)
            }
        } catch (e: Exception) {
            // 跳过异常字段
            continue
        }
    }
    // 无匹配结果返回null
    return null
}

调用示例:

val result = findStringResByValue(context, "Dummy Text")
result?.let {
    val resId = it.first
    val resName = it.second // 匹配成功后resName的值为text1
}

代码实现(Java)

import android.util.Pair;
import android.content.Context;

public static Pair<Integer, String> findStringResByValue(Context context, String targetString) {
    Field[] stringFields = R.string.class.getDeclaredFields();
    for (Field field : stringFields) {
        try {
            int resId = field.getInt(null);
            String resValue = context.getString(resId);
            if (resValue.equals(targetString)) {
                return new Pair<>(resId, field.getName());
            }
        } catch (Exception e) {
            continue;
        }
    }
    return null;
}

注意事项

  • 多语言适配:默认匹配的是当前系统语言对应的字符串值,如果需要匹配指定语言的字符串,需要构造对应语言配置的 Context 来获取资源值
  • 重复值处理:如果多个 string 资源定义了相同的字符串值,上述方法默认返回第一个匹配到的结果,如有需要可修改逻辑返回所有匹配结果
  • 性能优化:如果需要频繁执行该查找操作,建议首次遍历时生成<字符串值, 资源信息>的缓存字典,后续直接查缓存减少性能损耗
  • 多模块适配:如果你的项目有多模块/产品变种,需要遍历对应模块的R.string类,否则无法匹配到其他模块下的字符串资源

内容的提问来源于stack exchange,提问作者Abdulsamet Kılınçarslan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 16:09:01