为Kotlin / Anko DSL定义的ImageView设置图像时遇到问题

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

当我点击警报对话框中的按钮,我得到这个错误:

kotlin.TypeCastException:null不能转换为非null类型的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) } ...