【问题标题】:how to pass data to MaterialAlertDialogBuilder in android如何在android中将数据传递给MaterialAlertDialogBu​​ilder
【发布时间】:2020-06-22 14:16:11
【问题描述】:

我正在使用最新的材料设计库。现在要创建一个自定义对话框,我正在这样做

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 的对话框。它有两个带有id1id2 的文本字段。

现在打开此对话框时,我需要设置 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

请仅以材料设计方式回答。我不想要旧的方式这就是为什么我使用MaterialAlertDialogBuilder

【问题讨论】:

    标签: android material-design android-alertdialog


    【解决方案1】:

    你必须这样做

    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类的Factory内部类。

    Editable.Factory.getInstance().newEditable("your_text_value")

    有关类型不匹配的更多详细信息,请参见此处。 https://stackoverflow.com/a/37374301/13074527

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-14
      相关资源
      最近更新 更多