首页 > 解决方案 > 如何将字符串从活动传递到kotlin中的另一个活动

问题描述

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

我不确定我哪里出错了。

这是我的主要活动

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)
        }
    }
}

我的可打包类

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

这是我的第二个活动

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()

    }
}

标签: android-studiokotlinparcelable

解决方案


您正在将整个 Info 数据类转换为其字符串表示形式。您只需要数据类中的 name 属性。

name.text = info.name

推荐阅读