Как передать строку из activity в другое activity в kotlin

#android-studio #kotlin #parcelable

#android-studio #kotlin #parcelable

Вопрос:

Я пытаюсь передать текст своему второму activity, но, похоже, он работает неправильно. Для моего основного activity у меня есть textview, и в тексте написано ‘Cat’. Когда изображение в первом действии нажато, я хочу, чтобы «Cat» был передан второму действию. Текстовое представление второго activity также должно отображать «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()

    }
}
  

Ответ №1:

Вы преобразуете весь класс данных Info в его строковое представление. Вам нужно только свойство name из класса данных.

 name.text = info.name