Android View Binding使用问题:如何解决EditText的text属性Editable类型赋值适配问题
问题原因
EditText的text属性通过View Binding暴露时,其取值方法返回的是Editable类型,直接使用=赋值时要求传入同样的Editable类型,你传入的String不属于Editable的子类,因此无法通过强制类型转换匹配类型。
你删除赋值运算符=后代码仅执行读取text值的操作,没有赋值逻辑自然不会触发类型不匹配错误。
解决方案
方案1(优先推荐):调用setText()方法
EditText继承自TextView,原生提供的setText()方法支持直接传入CharSequence类型参数(String属于CharSequence的子类,可以直接传入),写法如下:
binding.editText.setText( String.format("%02d", picker.hour - 12) + " : " + String.format("%02d", picker.minute) + "PM" )
方案2:显式创建Editable实例赋值
如果确实需要通过=直接给text属性赋值,可以通过Editable.Factory将String转换为Editable实例:
val timeText = String.format("%02d", picker.hour - 12) + " : " + String.format("%02d", picker.minute) + "PM" binding.editText.text = Editable.Factory.getInstance().newEditable(timeText)
内容的提问来源于stack exchange,提问作者Elena Bernucci
相关产品推荐
相关产品推荐

