如何覆盖kotlin的setter方法?
class loginViewModel(): BaseObservable() { var errorEmail:String?=null var errorPassword:String?=null var userEmailAddress:ObservableField = ObservableField() var userPassword:ObservableField = ObservableField() fun setUserEmailAddress(email:ObservableField){ this.userEmailAddress=email /* To get value of edittext enterd by user, This Updates the value of userEmail on Every LEtter Entered by User*/ notifyPropertyChanged(R.id.email_address) notifyPropertyChanged(BR.errorEmail) } }
但是得到错误
Platform declaration clash: The following declarations have the same JVM signature (setUserEmailAddress(Landroid/databinding/ObservableField;)V): • public final fun setUserEmailAddress(email:ObservableField): Unit • public final fun (:ObservableField): Unit
我试过这个解决方案 。
kotlin version = 1.1.2-4我试图重写也是我认为我们不能的乐趣。
您可以为您的字段声明一个自定义设置器 ,而不是创建一个新的setUserEmailAddress()
方法。 你可以看到下面的代码。
你得到这个错误的原因是因为在你创建一个var时,会自动为你创建一个setter。 您正在创建的setUserEmailAddress
函数与其名称相匹配导致命名空间冲突。
class loginViewModel(): BaseObservable() { var errorEmail:String?=null var errorPassword:String?=null var userPassword:ObservableField = ObservableField() var userEmailAddress:ObservableField = ObservableField() set(email){ // the type of email is inferred field=email // we can access the backing field in our custom setter /* To get value of edittext enterd by user, This Updates the value of userEmail on Every LEtter Entered by User*/ notifyPropertyChanged(R.id.email_address) notifyPropertyChanged(BR.errorEmail) } }
- Kotlin stdlib和Databinding
- 错误:执行失败的任务':app:kaptDemoTestingDebugKotlin'
- 在使用Android Databinding和Kotlin的自定义BindingAdapter中使用lambda
- Android数据绑定的Kotlin问题
- 如何在Android Studio 3.0.0中使用数据绑定和Kotlin
- Android数据绑定构建失败后,Gradle插件更新迁移到annotationProcessor
- 如何使用Fragment的数据绑定
- Kotlin自定义属性数据绑定
- 从Android Studio运行时,Kotlin Kapt不显示数据绑定错误