【问题标题】:How to set request code in Activity Result API?如何在 Activity Result API 中设置请求代码?
【发布时间】:2021-06-27 15:17:34
【问题描述】:

我正在从 startActivityForResult 迁移到 Activity Result API。我有自定义合同和启动器:

private val gameContract=object: ActivityResultContract<Int, GameActivity.GameResult?>() {
        override fun createIntent(context: Context, input: Int?): Intent {
            return Intent(this@SelectorActivity, GameActivity::class.java)
        }

        override fun parseResult(resultCode: Int, intent: Intent?): GameActivity.GameResult? {
            if (resultCode == Activity.RESULT_OK) {
                val data = intent?.getStringExtra("data")
                data?.let {
                    return Gson().fromJson(it, GameActivity.GameResult::class.java)
                }
                return null
            }
            return null
        }
    }

    private val gameLauncher=registerForActivityResult(gameContract){
        //
    }

当我使用 gameLauncher.launch(0) 开始活动时,我遇到了异常

java.lang.IllegalArgumentException: 只能使用低 16 位 请求代码

我尝试了不同的输入,但结果相同
显然它希望设置 requestCode 。但是API没有办法设置它。
我认为这个 API 的主要目的是摆脱混乱的请求代码

那么如何使用自定义合同开始活动?

【问题讨论】:

    标签: android kotlin registerforactivityresult


    【解决方案1】:

    问题是我忘了添加依赖

    implementation 'androidx.fragment:fragment-ktx:1.3.2'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-07
      • 2018-04-27
      • 2010-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多