startActivityForResult在fragment中的回调
时间: 2024-01-09 14:16:08 浏览: 129
当在Fragment中调用startActivityForResult方法启动一个Activity后,当Activity返回结果时,回调会首先到达FragmentActivity的onActivityResult方法。然而,由于FragmentActivity的一个BUG,只会回调最外层的Fragment的onActivityResult方法,而不会回调嵌套的Fragment的onActivityResult方法。这就导致了在嵌套Fragment中使用startActivityForResult方法时无法正确处理回调结果。
相关问题
ActivityResultContracts.StartActivityForResult
ActivityResultContracts.StartActivityForResult 是一个 Android Jetpack 库中的类,它提供了一种简单的方式来启动一个 Activity 并获取结果。它可以帮助开发者更方便地处理 startActivityForResult() 方法的回调。如果你需要使用这个类,你可以在你的 Activity 或 Fragment 中使用 registerForActivityResult() 方法来注册一个 ActivityResultCallback 对象,然后在你需要启动一个 Activity 并获取结果的地方调用 launch() 方法即可。
startactivityforresult过时怎么办
1. 使用startActivityForResult的替代方法:使用registerForActivityResult方法来注册ActivityResultCallback回调来处理结果。
2. 使用ActivityCompat.startActivityForResult方法,需要在build.gradle中添加ActivityCompat库。
3. 使用Fragment的startActivityForResult方法,需要将目标Activity作为一个Fragment启动。
4. 如果你的minSdkVersion为23或以上,可以使用Activity的requestPermissions方法来请求权限,这个方法也可以处理结果。
阅读全文