Java 如何从当前主题的自定义布尔属性中获取布尔值?
我正在我的主题中设置布尔格式的自定义属性Java 如何从当前主题的自定义布尔属性中获取布尔值?,java,android,material-design,android-theme,Java,Android,Material Design,Android Theme,我正在我的主题中设置布尔格式的自定义属性 <attr name="isCompound" format="boolean" /> 我得到一个错误,typedValue.data(int)无法转换为布尔值。我的问题是如何从当前主题中获得布尔值?感谢@Mike M.的评论 Blockquote“数据字段包含最初指定为“false”或“true”的0或1。” 文档说它返回1表示真,返回0表示假。但是当我测试时,它返回-1表示真,0表示假 我想,安全的方法是检查false。感谢@Mike
<attr name="isCompound" format="boolean" />
我得到一个错误,typedValue.data(int)无法转换为布尔值。我的问题是如何从当前主题中获得布尔值?感谢@Mike M.的评论 Blockquote“数据字段包含最初指定为“false”或“true”的0或1。” 文档说它返回1表示真,返回0表示假。但是当我测试时,它返回-1表示真,0表示假
我想,安全的方法是检查false。感谢@Mike M.的评论 Blockquote“数据字段包含最初指定为“false”或“true”的0或1。” 文档说它返回1表示真,返回0表示假。但是当我测试时,它返回-1表示真,0表示假
我想,安全的方法是检查false。“数据字段包含0或1,它们最初被指定为“false”或“true”。–.Hmm,不过我得到了意想不到的结果。一定要测试一下。我不确定我是否只是在测试中做了一些愚蠢的事情,或者是其他的事情……“数据字段包含0或1,它们最初被指定为“false”或“true”。–。嗯,不过,我得到了意想不到的结果。一定要测试一下。我不确定我是否只是在测试中做了一些愚蠢的事情,或者是其他的事情……也就是我的发现。而且,看看一些框架源代码示例,它们也是这样做的;检查是否存在错误。您可能还需要检查
resolveAttribute()
调用的返回。它返回一个布尔值
,指示它是否可以解析属性。仅供参考。无需检查返回的布尔值,因为默认值为false对不起,我应该用不同的措辞。我的意思是,如果需要知道在给定主题中是否已显式设置了isCompound
,您可能需要检查一下。我不确定你的确切要求,也不确定我的发现。而且,看看一些框架源代码示例,它们也是这样做的;检查是否存在错误。您可能还需要检查resolveAttribute()
调用的返回。它返回一个布尔值
,指示它是否可以解析属性。仅供参考。无需检查返回的布尔值,因为默认值为false对不起,我应该用不同的措辞。我的意思是,如果需要知道在给定主题中是否已显式设置了isCompound
,您可能需要检查一下。我不确定你的确切要求。
TypedValue typedValue = new TypedValue();
getTheme().resolveAttribute(R.attr.isCompound, typedValue, true);
if(typedValue.data) {
...
}