You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jetpack Compose中如何从ActivityB向ActivityA返回数据?

问题分析与解决方案

你的问题出在ActivityB的ContinueClicked函数中多余的startActivity(intent2)调用,这会启动一个新的Activity实例,打断了返回ActivityA的流程,导致数据无法正常回传。此外,复用原Intent携带返回数据虽然可行,但更推荐创建新Intent来避免携带冗余数据。

修正后的ActivityB代码

// 无需全局存储原Intent,直接在返回时创建新Intent即可
@Composable
fun ContinueClicked(indexReturn: Int) {
    // 创建新Intent专门用于携带返回数据
    val resultIntent = Intent().apply {
        putExtra("indexReturn", indexReturn) // 用独立的key区分返回数据,避免和传入数据混淆
    }
    setResult(Activity.RESULT_OK, resultIntent)
    finish() // 直接关闭ActivityB,数据会自动回传给ActivityA
}

ActivityA中接收返回数据的代码补充

在ActivityA的startForResult回调中添加数据获取逻辑:

private val startForResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result: ActivityResult ->
    if (result.resultCode == Activity.RESULT_OK) {
        val intent = result.data
        if (intent != null) {
            // 获取返回的整数数据,第二个参数为默认值(key不存在时返回)
            val returnedIndex = intent.getIntExtra("indexReturn", -1)
            // 此处处理返回的数据,比如更新UI或执行业务逻辑
        }
    }
}

额外注意事项

  • 确保ActivityB始终通过startForResult.launch(intent)启动(你已实现此步骤),而非普通的startActivity方法。
  • 若需返回多组数据,直接在resultIntent中添加更多putExtra即可。
  • 禁止在finish()之前调用任何启动新Activity的方法,这会中断数据回传流程。

内容的提问来源于stack exchange,提问作者neelshenning

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 15:55:13