Android - ResourcesNotFoundException

Я передаю свой собственный объект sub, у которого есть свойство цвета, из одного действия в другое и получаю его следующим образом:

val intent = this.intent
val bundle = intent.extras
sub = bundle.getParcelable("selected")

затем, когда нажимается кнопка, появляется палитра цветов и позволяет мне выбрать цвет, у меня есть этот метод, который прослушивает выбор цвета:

override fun onColorSelected(dialogId: Int, color: Int) {
    sub.color = color
    createsub_rel.backgroundColor = color
}

как вы можете видеть, цвет возвращается как Int.

Исключения происходят в onBindViewHolder() моего RecyclerView, особенно в этой строке:

viewHolder.relativeLayout.setBackgroundColor(mContext.getColor(sub.color))

в журнале указано:

android.content.res.Resources$NotFoundException: Resource ID #0x7fff9800

Я отладил его, и sub.color на самом деле является ожидаемым значением, я искал здесь SO для решения, в частности, это, но я не смог найти никакого рабочего ответа.

Почему вы разрешаете colorResourceId, когда у вас уже есть значение цвета? ...setBackgroundColor(sub.color) не работает?

Pawel 01.05.2018 22:29

@Pawel да, это происходит на viewHolder.relativeLayout.setBackgroundColor(mContext.getCol‌​or(sub.color), хотя не совсем понял ваш первый вопрос, я получаю значение для отображения его в recyclerView

Daniele 01.05.2018 22:33
Context.getColor(int) используется для разрешения цвета из таких ресурсов, как R.color.colorAccent, вы не должны передавать значение ARGB в качестве аргумента.
Pawel 01.05.2018 22:37

@Pawel да, я думаю, что это все, мне нужно выяснить способ различать два случая, потому что обычно я получаю цвета из ресурсов, а не тогда, когда я его меняю, мне нужно создать отдельный адаптер или как могу я отличить эти два случая

Daniele 01.05.2018 22:40

Если вы можете изменить структуру sub, вы можете добавить поле, указывающее формат цвета, и добавить блок if (...) в свой метод привязки или обернуть цвет в пользовательский объект, который имеет метод getColor(context).

Pawel 01.05.2018 22:48

@Pawel В этом есть смысл, я так и сделаю, спасибо за помощь!

Daniele 01.05.2018 22:53
0
6
42
0

Другие вопросы по теме