所以我将颜色定义为属性,因为它取决于主题。
<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)
我在这里使用一些模块:
attr_module
,其中定义了属性。theme_module
,其中定义了主题并将其设置为应用程序usage_module
对该主题一无所知,但确实取决于attr_module
。我肯定知道主题已应用于usage_module
中的视图。当我不尝试以编程方式读取selected_color_normal
而是仅应用属性时,所有依赖项均已正确设置-一切正常。
感谢您的帮助!
答案 0 :(得分:1)
我认为,这里的问题是因为primary_text_color
是属性,而selected_color_normal
是颜色。
尝试制作
<color name="selected_color_normal">#FFFFFFFF</color>
然后,根据需要,您可以根据需要为primary_text_color
赋予selected_color_normal
值:{p>
<style name="BaseReferencesTheme" parent="Theme.AppCompat.NoActionBar">
<item name="primary_text_color">@color/selected_color_normal</item>
答案 1 :(得分:0)
CASE WHEN ((SELECT COUNT(*) From location Where file_importer_id = fi.file_importer_id AND status = 'Y') + (SELECT COUNT(*) From reservation Where file_importer_id = fi.file_importer_id AND status = 'N') + (SELECT COUNT(*) From startup Where file_importer_id = fi.file_importer_id AND status in ('X', 'X1'))) > 0 THEN 'Waiting' ELSE 'Accepted' END AS waiting_status
-资源ID#0x7f06010e类型#0x2 无效
NotFoundException
#ffffffff
可能导致此问题。因为您得到?attr/primary_text_color
,这意味着它找不到特定的颜色,并且仅接受NotFoundException
中的指定的颜色。
答案 2 :(得分:0)
目前,我认为这个问题无法解决。目前,我的方法是尽可能使用?attr/primary_text_color
和R.attr.primary_text_color
。