【Android】Error: Expected resource of type styleable [ResourceType]
2016-07-21 14:44
531 查看
错误提示
Error: Expected resource of type styleable [ResourceType]这个错误在编译运行时候并不会出现,但是当需要编译打包的时候,就会爆出这个异常。
这个错误出现的位置位于自定义View中,代码如下:
<code class="language-Java hljs java has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">TypedArray ta = mContext.obtainStyledAttributes(attrs); <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">boolean</span> hasBottomLine = ta.getBoolean(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>, <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">false</span>); <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">boolean</span> hasTopLine = ta.getBoolean(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>, <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">false</span>);</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li></ul>
点击异常信息会定位到第三行,只有当 TypedArray 获取第二个属性以后数据时,才会出现此异常,ta.getBoolean(0, false) 这句则不会报错,其实这应该是一个警告,所以才会在调试的时候正常编译,但却在编译签名包的时候失败。
解决办法
解决办法就是在使用 TypedArray 的方法处,加上@SuppressWarnings("ResourceType"),这样即可过滤该警告,可以正常通过签名编译。例如:
<code class="language-Java hljs java has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-annotation" style="color: rgb(155, 133, 157); box-sizing: border-box;">@SuppressWarnings</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"ResourceType"</span>) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">public</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span> <span class="hljs-title" style="box-sizing: border-box;">initView</span>() { TypedArray ta = mContext.obtainStyledAttributes(attrs); <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">boolean</span> hasBottomLine = ta.getBoolean(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>, <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">false</span>); <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">boolean</span> hasTopLine = ta.getBoolean(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>, <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">false</span>); ta.recycle(); }</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li></ul>
参考链接
http://stackoverflow.com/questions/26360954/obtainstyledattributes-annotated-with-styleableres-suppress-warnings顶7
踩0
相关文章推荐
- android用户信息保存
- android日期选择控件DatePicker小结
- ANDROID SHAPE画圆形背景实现圆形TextView
- Android studio关于Jar包 与aar包的导入与使用
- 解决Android MediaRecorder录制视频过短问题
- 最强理解:Android对EditText输入时设置监听即TextWatcher的用法
- 事件拦截机制分析(Android群英传)
- android中ExpandableListView的使用
- Android应用界面开发05
- android studio 导入以前的项目左边的项目名会全部变红
- 关于Fragment使用中遇到的异常:Fragment already added和fragment not attached
- Android launcher 开发笔记(三) 启动过程分析 part 2
- Activity是否显示
- Android launcher 开发笔记(三) 启动过程分析 part 1
- Andriod界面设计适配和Android Studio中的资源
- Android launcher 开发笔记(三) 启动过程分析
- androidstudio类注释模板创建
- Android第一周(第二部分)-Intent和Activity生命周期
- Android Process 详解
- Android定位的实现