XML数据绑定中Android Studio不提示MutableLiveData的问题求助
Android Studio无法识别ViewModel中MutableLiveData字段的数据绑定代码提示问题
问题描述
在ViewModel中定义MutableLiveData类型的字段后,进行XML数据绑定时,Android Studio无法为该字段提供代码提示;但普通实体类字段却能正常被识别和提示。
代码示例
public class LoginViewModel extends ViewModel { public MutableLiveData<UserEntity> userEntity; public UserEntity userEntity1; }
现状
userEntity1可正常被IDE识别并给出代码提示,但userEntity无法被识别,没有任何提示。
解决方案
这个问题其实是Android Studio的一个已知Bug,Android Studio 3.4.2版本已经修复了该问题,所以优先推荐的解决方式是:
- 将你的Android Studio升级到3.4.2或更高版本,升级后重新同步项目,即可正常获取
MutableLiveData字段的代码提示。
如果暂时无法升级IDE,可以尝试以下临时解决方案:
- 确认项目已正确配置数据绑定:检查模块级
build.gradle文件中是否开启了数据绑定:
配置完成后执行android { ... dataBinding { enabled = true } }File -> Sync Project with Gradle Files同步项目。 - 手动在XML中写出
MutableLiveData字段的引用(比如@{viewModel.userEntity}),虽然没有提示,但代码可正常运行;写完后执行File -> Invalidate Caches / Restart刷新IDE缓存,部分情况下能触发提示。 - 为
MutableLiveData字段添加getter方法,规范字段的访问方式:
之后在XML中使用public class LoginViewModel extends ViewModel { private MutableLiveData<UserEntity> userEntity; public MutableLiveData<UserEntity> getUserEntity() { if (userEntity == null) { userEntity = new MutableLiveData<>(); } return userEntity; } }@{viewModel.userEntity}(IDE会自动识别getter)或@{viewModel.getUserEntity()},这种方式大概率能让IDE识别到字段并提供提示。
内容的提问来源于stack exchange,提问作者Ahmad Aghazadeh
相关产品推荐
相关产品推荐

