如何覆盖kotlin中的setter方法? classloginviewmodel():BaseObservable(){ var errorEmail:String?=null var errorPassword:字符串?=null var userEmailAddress:observeField=observeField() var userPassword:ObservableField=ObservableField() fun setUserEmailAddress(电子邮件:ObservableField){ this.userEmailAddress=电子邮件 /*要获取用户输入的edittext的值,这将更新用户输入的每个字母的userEmail值*/ notifyPropertyChanged(R.id.email\u地址) notifyPropertyChanged(BR.errorEmail) } }
但是得到了错误如何覆盖kotlin中的setter方法? classloginviewmodel():BaseObservable(){ var errorEmail:String?=null var errorPassword:字符串?=null var userEmailAddress:observeField=observeField() var userPassword:ObservableField=ObservableField() fun setUserEmailAddress(电子邮件:ObservableField){ this.userEmailAddress=电子邮件 /*要获取用户输入的edittext的值,这将更新用户输入的每个字母的userEmail值*/ notifyPropertyChanged(R.id.email\u地址) notifyPropertyChanged(BR.errorEmail) } },kotlin,android-databinding,Kotlin,Android Databinding,但是得到了错误 class loginViewModel(): BaseObservable() { var errorEmail:String?=null var errorPassword:String?=null var userEmailAddress:ObservableField<String> = ObservableField() var userPassword:ObservableField<String> = Ob
class loginViewModel(): BaseObservable() {
var errorEmail:String?=null
var errorPassword:String?=null
var userEmailAddress:ObservableField<String> = ObservableField()
var userPassword:ObservableField<String> = ObservableField()
fun setUserEmailAddress(email:ObservableField<String>){
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)
}
}
平台声明冲突:以下声明具有相同的JVM签名(setUserEmailAddress(Landroid/databinding/observeField;)V):
•公共最终用户电子邮件地址(电子邮件:observefield):单位
•公共最终娱乐(:可观察场):单位
我试过了
kotlin版本=1.1.2-4
我也试着忽略了乐趣,但我认为我们做不到 您可以为字段声明一个,而不是创建一个新的setUserEmailAddress()
方法。您可以在下面看到执行此操作的代码
出现此错误的原因是,在生成变量时,会自动生成一个setter。正在生成的setUserEmailAddress
函数与其名称匹配,从而导致命名空间冲突
Platform declaration clash: The following declarations have the same JVM signature (setUserEmailAddress(Landroid/databinding/ObservableField;)V):
• public final fun setUserEmailAddress(email:ObservableField<String>): Unit
• public final fun <setUserEmailAddress>(<set-?>:ObservableField<String>): Unit
classloginviewmodel():BaseObservable(){
var errorEmail:String?=null
var errorPassword:字符串?=null
var userPassword:ObservableField=ObservableField()
var userEmailAddress:observeField=observeField()
set(email){//推断电子邮件的类型
field=email//我们可以访问自定义setter中的backing字段
/*要获取用户输入的edittext的值,
这将在上更新userEmail的值
用户输入的每个字母*/
notifyPropertyChanged(R.id.email\u地址)
notifyPropertyChanged(BR.errorEmail)
}
}
您可以为字段声明一个,而不是创建一个新的setUserEmailAddress()
方法。您可以在下面看到执行此操作的代码
出现此错误的原因是,在生成变量时,会自动生成一个setter。正在生成的setUserEmailAddress
函数与其名称匹配,从而导致命名空间冲突
Platform declaration clash: The following declarations have the same JVM signature (setUserEmailAddress(Landroid/databinding/ObservableField;)V):
• public final fun setUserEmailAddress(email:ObservableField<String>): Unit
• public final fun <setUserEmailAddress>(<set-?>:ObservableField<String>): Unit
classloginviewmodel():BaseObservable(){
var errorEmail:String?=null
var errorPassword:字符串?=null
var userPassword:ObservableField=ObservableField()
var userEmailAddress:observeField=observeField()
set(email){//推断电子邮件的类型
field=email//我们可以访问自定义setter中的backing字段
/*要获取用户输入的edittext的值,
这将在上更新userEmail的值
用户输入的每个字母*/
notifyPropertyChanged(R.id.email\u地址)
notifyPropertyChanged(BR.errorEmail)
}
}
可以找到更多关于支持字段的信息更多关于支持字段的信息可以找到可能重复的