Проблемы с настройкой изображения для DSL Kotlin/Anko, определенного ImageView
Я пытаюсь использовать DSL Kotlin и Anko для создания диалогового окна с предупреждением, которое позволяет пользователю выбрать изображение, а затем загрузить его в ImageView. Сейчас я просто пытаюсь заставить ImageView работать, поэтому у меня есть кнопка, чтобы загрузить предварительно выбранное изображение из URL с помощью Picasso.
Когда я нажимаю кнопку в диалоговом окне предупреждения, я получаю эту ошибку:
kotlin.TypeCastException: ноль не может быть приведен к непустому типу android.widget.ImageView
Я думаю, по какой-то причине ImageView не загружается через findViewById. Кто-нибудь знает, почему это может быть? Я предполагаю, что у 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()
1 ответ
Вы можете получить ссылку на ImageView
как это и избежать необходимости иметь дело с идентификаторами в целом:
val iv = imageView()
...
onClick {
Picasso.with(this@MainActivity)
.load("http://SomeUrl/image.jpg")
.into(iv)
}
...