如何在 kotlin 中将字符串从 activity 传递到另一个 activity

How to pass string from activity to another activity in kotlin

我正在尝试将文本传递给我的第二个 activity,但它似乎无法正常工作。 对于我的主要 activity,我有一个文本视图,文本显示 'Cat'。当按下第一个 activity 上的图像时,我希望将“猫”传递给第二个 activity。第二个 activity 的文本视图也应该显示“Cat”,但是当我这样做时,它会显示为“Info(name=Cat)”而不是“猫"。

我不确定哪里出错了。

这是我的主要activity

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

        val image = findViewById<ImageView>(R.id.imageView)
        val text = findViewById<TextView>(R.id.textView)

        image.setOnClickListener {
            val intent= Intent(this, MainActivity2::class.java).apply {

                putExtra("name", Info("Cat"))
            }
            startActivity(intent)
        }
    }
}

我的包裹class

@Parcelize
data class Info(val name : String) : Parcelable {
}

这是我的第二个activity

class MainActivity2 : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main2)

        val info = intent.getParcelableExtra<Info>("name")

        val name = findViewById<TextView>(R.id.textView2)

        name.text = info.toString()

    }
}

您正在将整个信息数据 class 转换为其字符串表示形式。您只需要数据 class.

中的名称 属性
name.text = info.name