registerForActivityResult应在fragment或activity创建之前调用
就是说,如果要为返回的结果注册监听器的话,不能在fragment或activity已经创建好了再调用。
可以放在字段中:
class CrimeFragment : Fragment() { ... private val aLauncher = registerForActivityResult(ActivityResultContracts.PickContact()) { uri: Uri? -> doWhenChooseSuspect(uri) } private val requestPermissionLauncher = registerForActivityResult( ActivityResultContracts.RequestPermission() ) { isGranted: Boolean -> if (isGranted) { aLauncher.launch() } else { Toast.makeText( context, "we need the permission to get suspect", Toast.LENGTH_LONG ).show() } } ......
文档有这么一段话:This *must* be called unconditionally, as part of initialization path, typically as a field initializer of an Activity or Fragment.
本文作者:ou尼酱~~~
本文链接:https://www.cnblogs.com/--here--gold--you--want/p/14844538.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
分类:
android bug收集档
, fragment
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步