如何在 android 中将数据传递给 MaterialAlertDialogBuilder
how to pass data to MaterialAlertDialogBuilder in android
我正在使用最新的 material 设计库。现在要创建一个自定义对话框,我正在这样做
holder.id_edit_srt_bit.setOnClickListener {
println(my_data[position])
var data = my_data[position]
MaterialAlertDialogBuilder(context)
.setView(R.layout.dialog_edit_form)
.setPositiveButton("OK") { dialog, which ->
println("---------> $dialog -> $which")
}
.setNegativeButton("NO") { dialog, which ->
println("---------> $dialog -> $which")
}
.show()
}
单击它会打开带有我的自定义布局的对话框 dialog_edit_form
。它有两个文本字段 id1
和 id2
.
现在打开此对话框时我需要设置一个值,该值位于 data
变量
怎么做?
我试过了但是没用
var dialog = Dialog(context)
dialog.findViewById<EditText>(R.id.id1)?.text = data?.val1 as Editable
dialog.findViewById<EditText>(R.id.id2)?.text = data?.val2 as Editable
请仅以material设计方式回答。我不想要旧的方法来做这就是为什么我使用 MaterialAlertDialogBuilder
你必须这样做
var dialogView = MaterialAlertDialogBuilder(context)
.setView(R.layout.dialog_edit_form)
...
.show()
dialogView.findViewById<EditText>(R.id.id1)?.text =
Editable.Factory.getInstance().newEditable("${data?.val1}")
dialogView.findViewById<EditText>(R.id.id2)?.text =
Editable.Factory.getInstance().newEditable("${data?.val2}")
为了避免类型不匹配,可以使用Editable class的Factory inner class。
Editable.Factory.getInstance().newEditable("your_text_value")
此处提供了有关类型不匹配的更多详细信息。
我正在使用最新的 material 设计库。现在要创建一个自定义对话框,我正在这样做
holder.id_edit_srt_bit.setOnClickListener {
println(my_data[position])
var data = my_data[position]
MaterialAlertDialogBuilder(context)
.setView(R.layout.dialog_edit_form)
.setPositiveButton("OK") { dialog, which ->
println("---------> $dialog -> $which")
}
.setNegativeButton("NO") { dialog, which ->
println("---------> $dialog -> $which")
}
.show()
}
单击它会打开带有我的自定义布局的对话框 dialog_edit_form
。它有两个文本字段 id1
和 id2
.
现在打开此对话框时我需要设置一个值,该值位于 data
变量
怎么做?
我试过了但是没用
var dialog = Dialog(context)
dialog.findViewById<EditText>(R.id.id1)?.text = data?.val1 as Editable
dialog.findViewById<EditText>(R.id.id2)?.text = data?.val2 as Editable
请仅以material设计方式回答。我不想要旧的方法来做这就是为什么我使用 MaterialAlertDialogBuilder
你必须这样做
var dialogView = MaterialAlertDialogBuilder(context)
.setView(R.layout.dialog_edit_form)
...
.show()
dialogView.findViewById<EditText>(R.id.id1)?.text =
Editable.Factory.getInstance().newEditable("${data?.val1}")
dialogView.findViewById<EditText>(R.id.id2)?.text =
Editable.Factory.getInstance().newEditable("${data?.val2}")
为了避免类型不匹配,可以使用Editable class的Factory inner class。
Editable.Factory.getInstance().newEditable("your_text_value")
此处提供了有关类型不匹配的更多详细信息。