registerForActivityResult 如何使用
时间: 2024-05-01 13:17:41 浏览: 12
registerForActivityResult是Android Jetpack中的一个API,用于将Activity或Fragment与其他组件(如CameraX或ActivityResultContracts)进行连接。
使用registerForActivityResult的步骤如下:
1. 创建一个ActivityResultLauncher对象。
2. 为该对象注册一个Contract,该Contract定义了所需的操作类型(如拍照或选择图像)以及操作结果。
3. 在ActivityResultLauncher对象的回调方法中处理结果。
以下是一个示例:
```kotlin
class MyActivity : AppCompatActivity() {
private lateinit var someActivityResultLauncher: ActivityResultLauncher<Intent>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
someActivityResultLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
if (result.resultCode == Activity.RESULT_OK) {
val data: Intent? = result.data
//处理结果
}
}
//启动另一个Activity
val someIntent = Intent(this, SomeActivity::class.java)
someActivityResultLauncher.launch(someIntent)
}
}
```
在这个示例中,我们使用StartActivityForResult Contract注册了一个ActivityResultLauncher。当我们调用launch()方法启动另一个Activity时,该Activity将在完成后返回结果,然后ActivityResultLauncher的回调方法将被调用。
总之,registerForActivityResult是Android Jetpack中的一个方便的API,用于连接Activity或Fragment与其他组件,并处理相应的操作结果。