Android Studio 3.1.2更新后DataBinding视图ID无法自动提示求助
我之前也碰到过Android Studio升级后DataBinding代码提示抽风的情况,尤其是3.1.2这个版本确实存在一些小bug。给你几个亲测有效的解决思路:
先确认DataBinding基础配置
确保app模块的build.gradle里正确开启了DataBinding,升级过程中配置可能被意外改动:android { ... dataBinding { enabled = true } }同时要保证gradle插件版本和AS版本匹配(3.1.2对应gradle插件
com.android.tools.build:gradle:3.1.2),版本不兼容很容易引发索引类问题。清除AS缓存并重启
这是解决AS索引异常的“万金油”操作,升级后旧缓存和新版本不兼容是常见诱因:
点击菜单栏的File->Invalidate Caches / Restart...,选择Invalidate and Restart,等待AS重启并重新索引整个项目。重启后大部分实时提示问题都会消失。关闭DataBinding增量编译
3.1.2版本的DataBinding增量编译可能存在bug,导致实时生成Binding类的逻辑失效。你可以在项目根目录的gradle.properties里添加一行配置关闭它:android.databinding.incremental=false同步gradle后再观察提示是否恢复正常。
检查布局文件的DataBinding结构
确保布局用<layout>标签正确包裹,结构错误会导致AS无法实时生成对应的Binding类,自然不会有ID提示:<layout xmlns:android="http://schemas.android.com/apk/res/android"> <data> <!-- 这里是你的数据变量声明 --> </data> <!-- 正常布局内容 --> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/tv_sample" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> </layout>尝试调整gradle插件版本
如果上面的方法都没用,大概率是3.1.2版本本身的bug。你可以尝试把gradle插件升级到3.1.3或者3.2.0(记得同步调整gradle wrapper版本),在项目根目录的build.gradle里修改:dependencies { classpath 'com.android.tools.build:gradle:3.1.3' }
这些方法里,清除缓存重启的解决概率最高,建议优先尝试。
内容的提问来源于stack exchange,提问作者Tushar Monirul

