kotlin - 如何获取数据类 Kotlin 内的伴生对象内的上下文?

标签 kotlin data-class companion-object

我正在尝试在数据类内的伴随对象中使用资源字符串。但我不知道如何在 Kotlin 中获取这种情况的上下文。 有谁知道怎么做吗?

data class PhoneCall(
val type: String,
    val code: String,
    val description: String){
companion object{
const val SOLUTION_NO_SOLUTION = "NO_SOLUTION" 
        const val SOLUTION_TOMORROW = "71_INAT"
        const val SOLUTION_TODAY = "72_INAT"

val solutions = listOf(
PhoneCall(Service.Traffic.PICK_UP, SOLUTION_NO_SOLUTION, Resources.getSystem().getString(R.string.makeService))
)
}

我需要在 3 参数中使用资源字符串,但我无法获取上下文。

最佳答案

您可以修改 PhoneCall 模型来存储字符串资源 ID,而不是实际的字符串。

data class PhoneCall(
    val type: String,
    val code: String,
    @StringRes val description: Int
) {
    companion object {
        const val SOLUTION_NO_SOLUTION = "NO_SOLUTION" 
        const val SOLUTION_TOMORROW = "71_INAT"
        const val SOLUTION_TODAY = "72_INAT"

        val solutions = listOf(
            PhoneCall(Service.Traffic.PICK_UP, SOLUTION_NO_SOLUTION, R.string.makeService)
        )
    }
}

然后,当您需要在 UI(例如 TextView)中显示此数据时,您可以从资源 id 中获取字符串。

descriptionTextView.text = getString(phoneCall.description)

关于kotlin - 如何获取数据类 Kotlin 内的伴生对象内的上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70152253/

相关文章:

android - 如何从协程后台线程更新UI线程?

spring-boot - 是否可以在一个事务中使用 MinIO 客户端保存一组文件?

inheritance - 在 Kotlin 中扩展数据类

scala - 特征能否保证它在编译时或运行时被伴随对象继承

scala - 何时使用伴随对象工厂与 new 关键字

android - Kotlin Android,从 HTTP 请求中解析 Json

java - 无法找到 Android Studio Flamingo 的嵌入式 java 版本和 gradle 工具版本的兼容版本

android - 应用程序崩溃,因为 lateinit 应用程序实例未初始化

constructor - Kotlin数据类便捷构造函数

android - 类文字的左侧只允许类