【问题标题】:Enums or sealed classes with strings带字符串的枚举或密封类
【发布时间】:2019-03-05 15:09:00
【问题描述】:

我可以在Kotlin 中创建包含字符串资源的enumsealed class 吗?

例如,我有这个类:

private enum class Item(
    val id: Int,
    @DrawableRes val imageRes: Int,
    val title: String
) {
    PURSE(1, R.drawable.ic_card, "My balance"),
    MESSAGES(2, R.drawable.ic_bell, "Messages")
}

如果我在构造函数中添加字段val resources: Resources,我无法设置参数resources,因此无法使用来自strings.xml 的字符串资源。在这种情况下,我不能对enums 使用本地化。

【问题讨论】:

  • 为什么不像处理图像那样传递@StringRes?
  • @TimCastelijns,请添加您的答案,我会接受。
  • 我不确定答案如何。你肯定已经想到了这个解决方案
  • @TimCastelijns,也许这对你来说很明显,但我认为其他方向(内部课程等),所以,谢谢,你暗示了我。请添加您的答案,我会接受,以便其他人学习如何做。

标签: android kotlin enums


【解决方案1】:

您不需要资源实例。您可以使用字符串资源,就像对可绘制对象所做的那样:

private enum class Item(
    val id: Int,
    @DrawableRes val imageRes: Int,
    @StringRes val title: Int
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-18
    • 2014-07-23
    • 1970-01-01
    • 2021-11-16
    相关资源
    最近更新 更多