目前我正在为我的大学做一个项目,我发现 onActivityResult 已被弃用。可以做些什么来处理它?
这是困扰我的代码
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
val result = CropImage.getActivityResult(data)
if (resultCode == RESULT_OK) {
image = result.uri
Glide.with(this).load(image).into(binding.imgPick)
} else {
Snackbar.make(
binding.root,
"Image not selected",
Snackbar.LENGTH_SHORT
).show()
}
}
}
我试图在 stackoverflow 上找到一个解决方案,并且已经尝试实现了一些东西,但没有成功。
您可以使用以下方式:
fun openActivityForResult() {
startForResult.launch(Intent(this, AnotherActivity::class.java))
}
val startForResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
result: ActivityResult ->
if (result.resultCode == Activity.RESULT_OK) {
val intent = result.data
// Handle the Intent
//do stuff here
}
}
您可以在活动或片段中使用它。
首先定义意图结果启动器。
var picker: ActivityResultLauncher<Intent>
然后
picker = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
if (it.resultCode == Activity.RESULT_OK && it.data != null) {
//add your code here
}
}
现在启动您的活动。
val intent = Intent(context, ImagePickerActivity::class.java)
picker.launch(intent)