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

Android:跨Activity的Fragment间用Bundle传值(求Kotlin示例)

跨Activity的Fragment间用Bundle传数据的正确实现

你的现有代码是同一Activity内Fragment切换的传参方式,但Fragment A和B分属不同Activity,这种方式不生效。正确的思路是:先把数据从Fragment A传递到Activity B,再由Activity B把数据传给Fragment B,全程用Bundle/Intent Extras实现。

步骤1:Fragment A中启动Activity B并传递数据

在Fragment A里,获取EditText的内容,通过Intent的extras(本质是Bundle)把数据传给Activity B:

// Fragment A 代码
val emailText = emailField.text.toString() // 确保获取EditText的文本内容
val intent = Intent(requireContext(), ActivityB::class.java)
intent.putExtra("KEY_EMAIL", emailText) // 用键值对存数据
startActivity(intent)

步骤2:Activity B接收数据并传递给Fragment B

在Activity B的onCreate方法中,先从Intent取出数据,再创建Fragment B时把数据放入它的arguments:

// Activity B 代码
class ActivityB : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_b)

        // 从Intent中取出传递的数据
        val receivedEmail = intent.getStringExtra("KEY_EMAIL")

        // 创建Fragment B并设置arguments
        val fragmentB = DashboardHomeFragment()
        val bundle = Bundle().apply {
            putString("data", receivedEmail)
        }
        fragmentB.arguments = bundle

        // 将Fragment B加载到Activity B的容器中
        supportFragmentManager.beginTransaction()
            .replace(R.id.fragment_container_b, fragmentB) // 替换成你的容器ID
            .commit()
    }
}

步骤3:Fragment B中读取数据

Fragment B的代码可以保留核心逻辑,但要优化空值处理,避免空指针:

// Fragment B 代码
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    val inputData = arguments?.getString("data") ?: "无数据" // 空值默认处理
    binding.emailCv.text = inputData
}

关键说明

  • 跨Activity传数据必须通过Intent,因为两个Activity是独立的组件,Fragment无法直接跨Activity传递arguments。
  • 键名(比如KEY_EMAIL)建议用常量定义,避免拼写错误,比如在一个单独的文件里定义:const val KEY_EMAIL = "key_email"。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 22:15:41