我最近开始研究数据绑定。我的源代码中发生了此问题:
public class MyClassName extends BaseObservable {
@Bindable
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
notifyPropertyChanged(BR.name <Can\'t find name in BR>);
}
}
据我所知:
Bindable批注应应用于Observable类的任何getter访问器方法。 Bindable将在BR类中生成一个字段,以标识已更改的字段。
但是当我为字段@Bindable
添加name
注释时,在setter方法中找不到BR.name
。
我的项目包含两个包:com.example.package1
和com.example.packag2
。上面的代码在com.example.packge2
中。
但是当我添加@Bindable
注释时,我无法导入com.example.package2.BR
,Android Studio仅建议com.example.package1.BR
。
我该如何解决此问题?
之所以这样,是因为首先需要生成生成的源-当存在未知参考时,它们将不会生成。这确实是一种自欺欺人的行为,但事实就是这样。
a)只需注释掉这一行:
// notifyPropertyChanged(BR.name);
b)建立项目
c),然后再次取消注释。
选项1:
仅clean
项目,然后Rebuild
项目。
选项2:
[在Android Studio中尝试Invalidate caches and restart
。
最后如果这两个都不起作用,那么
仅使用BR.variableName
它将在屏幕上显示error
,但是在runtime
上您将看不到任何error
。只需确保variable Name
和BR.NAME
必须相同。