#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