gpt4 book ai didi

android - 如何用 Activity 结果 API 替换 startActivityForResult?

转载 作者:行者123 更新时间:2023-12-03 13:31:36 25 4
gpt4 key购买 nike

我有一个主要 Activity 作为调用不同 Activity 的入口点,具体取决于条件。其中,我使用 Firebase Auth 来管理用户登录:

startActivityForResult(
AuthUI.getInstance().createSignInIntentBuilder()
.setAvailableProviders(providers)
.build(),
RC_SIGN_IN)

我覆盖 onActivityResult()区分返回的 Intent/数据,例如:
 override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
when (requestCode) {

REQUEST_CODE_1 -> {
// update UI and stuff
}

RC_SIGN_IN -> {
// check Firebase log in
}
// ...
}
}

使用 documentation 强烈推荐的 Activity 结果 API ,我知道我应该做 prepareCall()之前 ActivityResultLauncher并确保在我启动时 Activity 处于创建状态,但我仍然不明白如何优雅地处理多个 Activity 结果(至少在一个地方),如 onActivityResult() .

this article ,看来我需要实现 ActivityResultContract的多个子内部类类型(因此有多个 prepareCall() 的?),因为它们被认为是不同的契约(Contract),对吗?有人可以给我看一些反射(reflect)上述内容的骨架示例 onActivityResult()逻辑?

最佳答案

您可以根据需要为结果调用任意数量的 Activity ,并为每个 Activity 单独回调:

    val startForResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult())
{ result: ActivityResult ->
if (result.resultCode == Activity.RESULT_OK) {
// you will get result here in result.data
}

}
}

startForResult.launch(Intent(activity, CameraCaptureActivity::class.java))
您只需要指定 Activity 类 - CameraCaptureActivity::class.java 更新: The prepareCall() method has been renamed to registerForActivityResult() in Activity 1.2.0-alpha04 and Fragment 1.3.0-alpha04. And it should be startForResult.launch(...) in the last line感谢 Rafael Tavares 的更新

关于android - 如何用 Activity 结果 API 替换 startActivityForResult?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61455381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com