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

在Kotlin类中如何正确获取R.string对应的字符串资源?

解决Kotlin Android开发中R.string资源返回整型不显示文本的问题

你遇到的问题根源是R.string.xxx本质是Android编译阶段生成的资源唯一标识整型,不是实际的字符串内容,直接赋值给TextInputLayout的error属性只会显示对应的数字,无法加载文本。

以下是两种常用场景的解决方案:

  • 场景1:代码写在Activity/Fragment中
    直接调用Android组件自带的getString()方法即可,系统会自动匹配当前设备语言加载对应字符串资源。
    修改后的代码如下:
fun validateFields(storeBinding: FragmentEditStoreBinding): Boolean {
    var validate = true
    val inputName = storeBinding.etName.text.toString().trim()
    if (inputName.isEmpty()) {
        storeBinding.tilPhotoUrl.error = getString(R.string.helper_required)
        validate = false
    }
    return validate
}
  • 场景2:代码写在无Context的普通类中
    你需要传入Context实例来调用getString方法,优先传入Application Context避免内存泄漏风险:
    示例代码如下:
class StoreValidator(private val appContext: Context) {
    fun validateFields(storeBinding: FragmentEditStoreBinding): Boolean {
        var validate = true
        val inputName = storeBinding.etName.text.toString().trim()
        if (inputName.isEmpty()) {
            storeBinding.tilPhotoUrl.error = appContext.getString(R.string.helper_required)
            validate = false
        }
        return validate
    }
}

补充说明:如果你的字符串资源带占位符,比如R.string.tip_count对应文本为「最多可输入%d个字符」,可以直接在getString方法里传入参数填充:getString(R.string.tip_count, 20)即可得到最终的拼接字符串。

内容的提问来源于stack exchange,提问作者user12755870

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 13:09:03