Issue
I am trying to call registerForActivityResult
inside a fragment, when it finishes it just closes the fragment.
My question is how can I call this function from a fragment?
Code:
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()
}
}
}
Solution
Well the only solution I found was to use an activity, it seems that when using registerForActivityResult
it returns me to the activity, not the fragment, so if you were in a fragment that wasn't the activitie's main/default you won't be able to return to it, the function will return you to the main fragment for the activity since it's technichally opening a new intent to get the information from the user (image in this case), so it has to return to the activity and cannot return to the fragment.
Answered By - Ido Barnea
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.