首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >registerForActivityResult片段

registerForActivityResult片段
EN

Stack Overflow用户
提问于 2021-09-03 12:54:37
回答 1查看 971关注 0票数 2

我试图在片段中调用registerForActivityResult,当它完成时,它只会关闭片段。

我的问题是如何从片段中调用这个函数?

代码:

代码语言:javascript
复制
private val profileImageLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
    if (result != null && result.resultCode == Activity.RESULT_OK) {
        profileImageUri = result.data?.data

        try {
            profileImageUri?.let { profileImageUri ->
               if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P){
                    val bitmap: Bitmap = getBitmap(activity?.contentResolver, profileImageUri)

                    context?.let { context ->
                        Glide.with(context).load(bitmap).into(pfpIV)
                        // here it closes the fragment
                    }
                } else {
                    context?.let { context ->
                        val source = ImageDecoder.createSource(context.contentResolver, profileImageUri)
                        var bitmap = ImageDecoder.decodeBitmap(source)
                        bitmap =  bitmap.copy(Bitmap.Config.ARGB_8888, true)
                        Glide.with(context).load(bitmap).into(pfpIV)
                        // here it closes the fragment
                    }
                }
            }
        } catch (e:IOException){
            e.printStackTrace()
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-04 12:16:31

我找到的唯一解决方案是使用一个活动,似乎当使用registerForActivityResult时,它会将我返回给活动,而不是片段,所以如果您在一个不是活动的主/默认的片段中,您将无法返回到它,函数将返回到活动的主片段,因为它在技术上打开了从用户那里获取信息的新意图(在这种情况下是图像),所以它必须返回到活动,不能返回到片段。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69045320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档