ActivityResultLauncher 本身不是一个 Activity。它是 Android Jetpack 库中 ActivityResultContracts API 的一部分,用于处理异步的 Activity 或 Fragment 结果。它提供了一种更简洁、类型安全的方式来启动一个 Activity 或 Fragment,并接收其结果,而无需使用传统的 startActivityForResult 或 Fragment.setTargetFragment 方法。
ActivityResultLauncher 是一个接口,它定义了一个 launch 方法,该方法接受一个参数(这个参数的类型取决于你使用的 ActivityResultContract),并启动一个与之关联的 Activity 或 Fragment。当这个 Activity 或 Fragment 结束时,你可以通过传递给 registerForActivityResult 的 ActivityResultCallback 来接收和处理结果。
这里是一个简单的例子,展示了如何使用 ActivityResultLauncher 来启动一个拍照的 Activity 并接收图片结果:
ActivityResultLauncher<String> takePictureLauncher = registerForActivityResult( | |
new ActivityResultContracts.TakePicture(), | |
new ActivityResultCallback<Boolean>() { | |
@Override | |
public void onActivityResult(Boolean result) { | |
if (result) { | |
// 拍照成功,处理图片 | |
} else { | |
// 拍照失败 | |
} | |
} | |
} | |
); | |
// 当需要拍照时 | |
String fileName = ... // 指定图片保存的文件名 | |
takePictureLauncher.launch(fileName); |
在这个例子中,ActivityResultLauncher<String> 的类型参数 String 对应于 ActivityResultContracts.TakePicture 需要的参数(即图片保存的文件名)。当调用 takePictureLauncher.launch(fileName) 时,系统会启动一个拍照的 Activity。拍照完成后,无论成功还是失败,都会调用你提供的 ActivityResultCallback 来处理结果。
总之,ActivityResultLauncher 是一个用于处理 Activity 或 Fragment 结果的工具,而不是一个 Activity。
955

被折叠的 条评论
为什么被折叠?



