如标题所述:
我想通过单击按钮更改editText内的文本。
我可以使用以下代码通过TextViews做到这一点:
TextView.text= "new text here"
但不适用于EditText
我已经尝试过这样的事情:
editText.setText(“此处输入新文本”)
有人可以告诉我editTexts的等效代码吗?
这是到目前为止的代码:
dialog.setOnClickListener {
var builder = AlertDialog.Builder(this)
var inflater: LayoutInflater = layoutInflater
var view : View = inflater.inflate(R.layout.dialog,null)
builder.setView(view)
builder.setTitle("categories")
builder.setPositiveButton("Ver", { dialogInterface: DialogInterface, i: Int ->
mainscreen.visibility = View.GONE
ListView.visibility = View.VISIBLE
listdogs.visibility=View.VISIBLE
listdogs.adapter = adapterdogs
editText?.setText("husky")
})
致谢
答案 0 :(得分:0)
如果确定此EditText不为空,则需要editText?.setText("new text here")
或editText!!.setText("new text here")
。
答案 1 :(得分:0)
之所以发生这种情况,是因为在EditText
的情况下java getter setter模棱两可。要了解这种情况,您首先需要了解kotlin如何从kotlin的java类生成属性。
科特林官员
遵循getter和setter的Java约定的方法(名称以get开头的无参数方法和名称以set开头的单参数方法)在Kotlin中表示为属性。布尔访问器方法(getter的名称以is开头,setter的名称以set开头)表示为与getter方法具有相同名称的属性。
但是如果是EditText,它继承了TextView的setter,则会在此处造成问题。
当二传手开始发挥作用时,财产的产生过程就变得big昧。原因是getter和setter可能具有不同的类型。此外,可以在子类中覆盖获取器和/或设置器, 正是Android中的EditText就是这种情况。
这意味着您可以获得EditText的Editable并将Editable设置为EditText。因此,Kotlin合理地创建了Editable类型的合成属性文本。考虑到String类不可编辑,因此无法将String实例分配给EditText类的text属性。