小编Gre*_*ory的帖子

ActivityResultContract 中获取请求代码的默认方式

有没有默认的方式来获取请求代码ActivityResultContract

我知道StartActivityForResult合同,它有回报ActivityResult,但没有requestCode,只有resultCode

我可以做这样的事情,但也许有更好的解决方案:

class StartActivityForResult : ActivityResultContract<ActivityInput, ActivityOutput?>() {
    override fun createIntent(
        context: Context,
        input: ActivityInput
    ): Intent {
        return input.data.apply { putExtra(requestCodeKey, input.requestCode) }
    }

    override fun parseResult(resultCode: Int, intent: Intent?): ActivityOutput? {
        return if (intent == null || resultCode != Activity.RESULT_OK) null
        else ActivityOutput(
            // should never return default value
            requestCode = intent.getIntExtra(requestCodeKey, -1),
            resultCode = resultCode,
            data = intent
        )
    }

    override fun getSynchronousResult(
        context: Context,
        input: …
Run Code Online (Sandbox Code Playgroud)

android android-intent registerforactivityresult activity-result-api

7
推荐指数
0
解决办法
388
查看次数