上述代码发现,两个**id值不相同**,但是确实是**同一个控件,**通过debug发现**R.id.ll_content**是一个以**1000**开头的数(其他控件通过R.id也是1000开头的数字,R.layout是1300开头的数字),而通过**view.getId()**得到的**dependency.id**是一个没有规律的数字,导致这两个Id不同

二、找R.java文件

因为上面的问题,就想着先去找**R.java**文件看看这个Id到底是什么
但是找不到R.java文件,**app\build\generated\source\r\debug\**文件夹下面没有
通过搜索在**app\build\intermediates\runtime_symbol_list\debug**文件夹下面发现一个R.txt文件
发现ll_content的id值是一个以**0x7f**开头的二进制数字,转换成十进制就和上面的**dependency.id**的结果是一致的。
R.java文件去哪儿了

Android Gradle在3.6.0版本的行为变更文档

简化了 R 类的生成过程

Android Gradle 插件通过仅为项目中的每个库模块生成一个 R 类并与其他模块依赖项共享这些 R 类,简化了编译类路径。这项优化应该会加快构建速度,但您需要注意以下事项:

由于编译器与上游模块依赖项共享 R 类,因此项目中的每个模块都必须使用独一无二的软件包名称。
库的 R 类对其他项目依赖项的可见性取决于用于将库添加为依赖项的配置。例如,如果库 A 将库 B 添加为“api”依赖项,则库 A 和其他依赖于库 A 的库都可以访问库 B 的 R 类。不过,如果库 A 使用 implementation 依赖项配置,则其他库可能无权访问库 B 的 R 类。如需了解详情,请参阅[依赖项配置](https://developer.android.com/studio/build/dependencies#dependency_configurations)。
本人使用的**Android studio4.0.1**,新建的项目默认依赖**Android gradle 4.x**,这就导致了**没有R.java**文件
那这个R.id.ll_content的数值是怎么来的呢???
答案是**不知道**🤦‍♂️🤦‍♂️🤦‍♂️,到目前为止并未找出真正的原因,知道原因的小伙伴请评论区指点迷津
**最终的解决方案只能是根据控件的位置查找了**
    override fun layoutDependsOn(
        parent: CoordinatorLayout,
        child: View,
        dependency: View
    ): Boolean {
        return dependency.id == parent.getChildAt(1).id
    panmin
       
粉丝