无法为 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)
}
...
我正在尝试使用 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)
}
...