Могу ли я создать enum или sealed class в Kotlin, которые содержат строковые ресурсы?

Например, у меня есть такой класс:

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. В этом случае я не могу использовать локализацию для enum s.

3
CoolMind 5 Мар 2019 в 18:09

1 ответ

Лучший ответ

Вам не нужен экземпляр ресурсов. Вы можете использовать строковый ресурс, как и для drawable:

private enum class Item(
    val id: Int,
    @DrawableRes val imageRes: Int,
    @StringRes val title: Int
)
6
Tim 5 Мар 2019 в 15:21