Ресурсы $ NotFoundException при доступе к атрибуту в виде цвета - PullRequest
0 голосов
/ 02 октября 2018

Итак, у меня есть цвет, определенный как атрибут, потому что он зависит от темы.

<attr name="primary_text_color" format="color"/>

Он определен в теме как

<style name="BaseReferencesTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="primary_text_color">#ffffffff</item>
</style>

Я бы хотелобернуть его реальным цветным ресурсом.

<color name="selected_color_normal">?attr/primary_text_color</color>

А затем прочитать его из кода

int resolvedColor = ContextCompat.getColor(context, R.color.selected_color_normal);

Когда я это делаю, я получаю исключение

 android.content.res.Resources$NotFoundException: Resource ID #0x7f06010e type #0x2 is not valid
        at android.content.res.Resources.getColor(Resources.java:955)
        at android.content.Context.getColor(Context.java:588)
        at android.support.v4.content.ContextCompat.getColor(ContextCompat.java:523)

Здесь я работаю с несколькими модулями:

  1. attr_module, где определены атрибуты.
  2. theme_module, где тема определена и установлена ​​для приложения
  3. usage_module, который ничего не знает о теме, но зависит от attr_module.

Я точно знаю, что тема применяется к представлениям в usage_module,Все зависимости установлены правильно, когда я не пытаюсь программно прочитать selected_color_normal, а просто применяю атрибут - все работает.

Спасибо за любую помощь!

Ответы [ 3 ]

0 голосов
/ 02 октября 2018

Я думаю, проблема здесь в том, что primary_text_color это атрибут, а selected_color_normal это цвет.

Попробуйте сделать

<color name="selected_color_normal">#FFFFFFFF</color>

И тогда, в своем стиле, вы можете дать primary_text_color значение selected_color_normal, если необходимо:

<style name="BaseReferencesTheme" parent="Theme.AppCompat.NoActionBar">
<item name="primary_text_color">@color/selected_color_normal</item>

0 голосов
/ 03 октября 2018

На данный момент я считаю эту проблему неразрешимой.В настоящее время мой подход заключается в использовании ?attr/primary_text_color и R.attr.primary_text_color везде, где это возможно.

0 голосов
/ 02 октября 2018

NotFoundException - идентификатор ресурса # 0x7f06010e, тип # 0x2 недействителен

#ffffffff

?attr/primary_text_color

Может привести квопрос.Поскольку вы получаете NotFoundException, это означает, что он не может найти определенный цвет и принимает только указанные цвета в <color.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...