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

Kotlin中为何无法将SecondActivity的EditText值传递到MainActivity的TextView?

Activity间传值问题解决:EditText内容无法传递到MainActivity

问题根源

  1. 数据类型不匹配:EditText的info.text返回Editable类型,而getStringExtra仅能读取String类型数据,直接传递会导致取值失败。
  2. 错误的启动方式:当前代码通过startActivity创建新的MainActivity实例,而非返回原有实例,所以原有MainActivity的TextView不会更新。

修改后的代码

MainActivity

class MainActivity : ComponentActivity() {
    private val secondActivityResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
        if (result.resultCode == RESULT_OK) {
            val message = result.data?.getStringExtra("key")
            findViewById<TextView>(R.id.textView).text = message
        }
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

    fun goSecondActivity(view: View){
        val intent = Intent(this, SecondActivity::class.java)
        secondActivityResult.launch(intent)
    }
}

SecondActivity

class SecondActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.second_activity)
        val button = findViewById<Button>(R.id.button3)
        val infoEditText = findViewById<EditText>(R.id.editTextText)

        button.setOnClickListener {
            val resultIntent = Intent()
            // 将Editable转为String后传递
            resultIntent.putExtra("key", infoEditText.text.toString())
            setResult(RESULT_OK, resultIntent)
            finish()
        }
    }
}

关键修改说明

  • 使用AndroidX推荐的registerForActivityResult机制接收返回结果,替代旧的startActivityForResultAPI。
  • SecondActivity通过setResult返回数据,调用finish()关闭自身,回到原MainActivity实例。
  • 传递数据时将EditText的Editable内容转为String,确保getStringExtra能正确读取。

内容的提问来源于stack exchange,提问作者Антон

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 07:33:12