【发布时间】:2021-12-31 11:35:08
【问题描述】:
我正在使用合约 ActivityResultContracts.TakePicturePreview() 来捕获一个小图像。
private val cameraLauncher =
registerForActivityResult(ActivityResultContracts.TakePicturePreview()) { bitmap ->
view?.findViewById<ImageView>(R.id.imageOutput)?.setImageBitmap(bitmap)
}
当我尝试为 Result 启动 Activity 时,我意识到这个合约需要一个 Void!对象作为输入。因此,我可以启动此活动的唯一方法是将“null”作为参数传递,我认为这不是很漂亮。
cameraLauncher.launch(null)
我尝试过传递“Nothing”、“Unit”,但类型不匹配。
这样做的正确方法是什么?
该函数的标题是
public void launch(Void input)
【问题讨论】:
-
你试过
cameraLauncher.launch()吗?activity-ktx中有一个 Kotlin 扩展程序可以为您处理这种情况。 -
@ianhanniballake 哦,谢谢 :) 我已经尝试过了,它可以工作。发问题之前,我没有导入
activity-ktx,所以这个扩展功能不可用。有了这个库,这段代码更漂亮了!
标签: android kotlin onactivityresult registerforactivityresult