android - 自迁移到 kotlin 以来,getData() 无法正常工作
问题描述
我是科特林的新手。我编写了这段代码,它将从图像选择器中获取图像。但我在网上遇到错误:val filePath: Uri = attr.data.getData()
错误:未解决的参考。kotlin 是否有任何变化,因为这段代码在 java 中工作正常(意味着我迁移到了 kotlin)
另一个错误 imageStore(bitmap)
错误:智能转换为位图是不可能的。
我搜索了文档,但无法解决这两个问题。
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (resultCode == Activity.RESULT_OK && requestCode == 1) {
val filePath: Uri = attr.data.getData()
try {
val inputStream: InputStream? = contentResolver.openInputStream(filePath)
bitmap = BitmapFactory.decodeStream(inputStream)
imageStore(bitmap)
} catch (e: FileNotFoundException) {
e.printStackTrace()
}
}
}
解决方案
但是我在线上遇到错误:val filePath: Uri = attr.data.getData() error: Unresolved reference
好吧,这意味着编译器无法理解您所指的内容。这样说对吗?
好吧,考虑到您没有任何命名的对象attr
,编译器似乎是正确的。
这意味着您应该删除该attr
部分,例如:
val filePath: Uri = data?.getData() ?: return
如果 Intent 中的数据为 null,则此处的 return 将停止执行其余的方法
要解决您的第二个问题,您需要这样的东西:
bitmap?.let { bitmapInstance ->
imageStore(bitmapInstance)
}
这是做什么的?
好吧,它使您可以线程安全地访问位图对象,并确保实例不为空。
推荐阅读
- spring - 带有 OAuth2 的 Spring Security 5 休息客户端
- arraylist - 为什么我的数字序列不能正确地从二维数组列表中打印出来?
- sql-server - SQL Server:带有日期的递归 CTE - 类型不匹配
- reactjs - 无法让 React Forwarded refs 在测试环境中工作
- html - 顺利加载消息Angular 8
- react-native - 此版本中使用了已弃用的 Gradle 功能,使其与 Gradle 6.0 不兼容。安装一些库时出错
- python-3.x - 按列名拼接 Pandas 数据框
- javascript - 为什么两个 if 语句在一个函数中不起作用?
- javascript - Javascript - 原始字符串隐式转换为对象
- php - PHP/Symfony 3:使用完全限定的类名(字符串)来调用实例化的类方法