为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) } ...
- 总是使用Kotlin Android的supportActionBar为null
- onActivityResult不叫(Kotlin)
- AndroidStudio / Kotlin – 未解决的参考:ReadWriteProperty – Kotlin版本1.0.0-beta-1038
- 在Android中将地图转换为捆绑
- 尝试使用Android Studio生成Kotlin应用程序的问题
- Lint在Java类上读取Kotlin对象时崩溃
- 警告:警告:注释处理器“android.arch.lifecycle.LifecycleProcessor”支持的源版本“RELEASE_7”小于“源”1.8
- 无法上传Android中的文件,并且没有错误的详细信息
- trim字符串函数中的“it <=”'“是什么意思