android 项目编译报错 符号: 类 shape 位置: 程序包 android.widget

错误

android 项目编译报错
符号: 类 shape
位置: 程序包 android.widget

详细错误

Compiling with JDK Java compiler API.
D:\AndroidProjects\ElectronicMall\app\build\generated\data_binding_base_class_source_out\debug\out\com\example\electronicmall\databinding\OrderEdtNoteBgBinding.java:7: 错误: 找不到符号
import android.widget.shape;
                     ^
  符号:   类 shape
  位置: 程序包 android.widget
D:\AndroidProjects\ElectronicMall\app\build\generated\data_binding_base_class_source_out\debug\out\com\example\electronicmall\databinding\OrderEdtNoteBgBinding.java:17: 错误: 找不到符号
  private final shape rootView;
                ^
  符号:   类 shape
  位置:OrderEdtNoteBgBinding
D:\AndroidProjects\ElectronicMall\app\build\generated\data_binding_base_class_source_out\debug\out\com\example\electronicmall\databinding\OrderEdtNoteBgBinding.java:19: 错误: 找不到符号
  private OrderEdtNoteBgBinding(@NonNull shape rootView) {
                                         ^
  符号:   类 shape
  位置:OrderEdtNoteBgBinding
D:\AndroidProjects\ElectronicMall\app\build\generated\data_binding_base_class_source_out\debug\out\com\example\electronicmall\databinding\OrderEdtNoteBgBinding.java:25: 错误: 找不到符号
  public shape getRoot() {
         ^
  符号:   类 shape
  位置:OrderEdtNoteBgBinding
D:\AndroidProjects\ElectronicMall\app\build\generated\data_binding_base_class_source_out\debug\out\com\example\electronicmall\databinding\OrderEdtNoteBgBinding.java:50: 错误: 找不到符号
    return new OrderEdtNoteBgBinding((shape) rootView);
                                      ^
  符号:   类 shape
  位置:OrderEdtNoteBgBinding: 某些输入文件使用或覆盖了已过时的 API。
注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
注: 某些输入文件使用了未经检查或不安全的操作。
注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
5 个错误

> Task :app:compileDebugJavaWithJavac FAILED
:app:compileDebugJavaWithJavac (Thread[Execution worker for ':' Thread 11,5,main]) completed. Took 5.685 secs.
AAPT2 aapt2-7.2.1-7984345-windows Daemon #0: shutdown

解决方案

对于XXXBinding错误
双击shift(全局搜索快捷键), 将XXX放入搜索框搜索,找到文件中标红错误, 鼠标放置标红错误处查看具体语法错误, 修改该错误

原因

View Binding是Android Studio 3.6推出的新特性,目的是为了替代findViewById(内部实现还是使用findViewById)。在启动视图绑定后,系统会为改模块中的每个xml文件生成一个绑定类,绑定类的实例包含对在相应布局中具有 ID 的所有视图的直接引用。

对于XXXBinding错误, 查找所编写的XXX文件(注意:文件是指xml视图文件), 查找XXX时, 由于系统生成的绑定类采用首字母大写的驼峰命名法, 但是开发人员可能采取下划线命名法(android 不支持xml视图文件中包含大写字母), 因此比对过程中注意所找文件与XXX大小写不一致

以笔者而言
报错文件

OrderEdtNoteBgBinding

出错文件

order_edt_note_bg

请添加图片描述
笔者误将drawable同时拷贝至layout, 但layout无法解析shape, corners, stroke标签, 这属于语法错误, 但是系统建立项目(build project)时只会为改模块中的每个xml文件生成一个绑定类, 不解析每个xml文件是否存在语法错误, 运行时在解析绑定类过程中发现无法解析java 语句, 因此产生 android 项目编译报错
符号: 类 shape
位置: 程序包 android.widget

参考文献

Android View Binding的使用

原创不易
转载请标明出处
如果对你有所帮助 别忘啦点赞支持哈
在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞滕人生TYF

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值