无法为 Kotlin/Anko DSL 定义的 ImageView 设置图像

Trouble setting an image for a Kotlin/Anko DSL defined ImageView

我正在尝试使用 Kotlin 和 Anko 的 DSL 创建一个提醒对话框,让用户选择一个图像,然后将其加载到 ImageView 中。现在我只是想让 ImageView 工作,所以我单击按钮以使用 Picasso 从 URL 加载预选图像。​​

当我单击警告对话框中的按钮时,出现此错误:

kotlin.TypeCastException: null cannot be cast to non-null type android.widget.ImageView

我猜出于某种原因,ImageView 没有通过 findViewById 加载。有谁知道为什么会这样?我猜 Anko 的 DSL 有一些我不知道的奇怪行为。

fab.setOnClickListener { view ->
            alert {
                title = "New Post"
                customView {
                    verticalLayout {

                        val subject = editText {
                            hint = "Subject"
                        }
                        imageView {
                            id = R.id.picked_image
                        }
                        linearLayout {
                            gravity = Gravity.CENTER
                            button("Choose Photo") {
                                onClick {
                                    Picasso.with(this@MainActivity)
                                            .load("http://SomeUrl/image.jpg")
                                            .into(findViewById(R.id.picked_image) as ImageView)

                                }
                            }
                            button("Choose Image") {}
                        }


                        positiveButton("Post") {  }
                        negativeButton("Cancel") {}
                    }
                }
            }.show()

您可以像这样获得对 ImageView 的引用并避免完全处理 ID:

val iv = imageView()
...
    onClick {
        Picasso.with(this@MainActivity)
                .load("http://SomeUrl/image.jpg")
                .into(iv)
    }
...