Skip to content

Instantly share code, notes, and snippets.

@BanHammerYKT
Last active February 10, 2023 16:31
Show Gist options
  • Save BanHammerYKT/725797f9074ba6b5e50a9f99b3954660 to your computer and use it in GitHub Desktop.
Save BanHammerYKT/725797f9074ba6b5e50a9f99b3954660 to your computer and use it in GitHub Desktop.
StartActivityForResult but with parameter
/*
Example usage:
captureImageActivity.launch(IntentWithParam(Intent(MediaStore.ACTION_IMAGE_CAPTURE), SOME_PARAM))
private val captureImageActivity = registerForActivityResult(StartActivityForResultWithParam()) { result ->
if (result.resultCode == Activity.RESULT_OK) {
val SOME_PARAM = result.param
...
}
}
*/
data class IntentWithParam(
val intent: Intent,
val param: Any?,
)
data class ActivityResultWithParam (
val resultCode: Int,
val data: Intent?,
val param: Any?,
)
class StartActivityForResultWithParam : ActivityResultContract<IntentWithParam, ActivityResultWithParam>() {
var param: Any? = null
override fun createIntent(context: Context, input: IntentWithParam): Intent {
param = input.param
return input.intent
}
override fun parseResult(
resultCode: Int,
intent: Intent?
): ActivityResultWithParam = ActivityResultWithParam(resultCode = resultCode, data = intent, param = param)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment