Насколько я понимаю, вы ищете extra
.
При запуске одного Activity
с другого, вы можете передавать данные через extra
.
Допустим, у вас есть класс Person
с String name
и int age
.
Есть 2 простых способа сделать это.
1. Отправить данные отдельно
Поскольку Person
- это простой класс, состоящий из 2 полей-членов, мы можем передавать все данные отдельно и объединять их в Person
в запущенном Activity
.
Нам нужно Intent
, чтобы сделать это.
val p = Person(name, age) // Person data
val intent = Intent(this, NewActivity::class.java)
intent.putExtra('name', p.name)
intent.putExtra('age', p.age)
startActivity(intent)
При запуске NewActivity
onCreate()
, вы можете получить эти данные и сделать из них объект.
val name = intent.getStringExtra('name')
val age = intent.getIntExtra('age')
val combinedPersonData = Person(name, age)
2. Отправить весь экземпляр
Если класс, который вы пытаетесь отправить, слишком велик для использования метода 1, вы можете попробовать отправить его как сам по себе.
Для этого вам нужно внедрить Serializable
или Parcelable
для вашего класса.
class Person(val name: String, val age: Int): Serializable { ... }
Убедитесь, что все члены класса также являются сериализуемыми или примитивными типами.
При этом вы можете отправить объект person как сериализуемый объект.
val p = Person(name, age) // Person data
val intent = Intent(this, NewActivity::class.java)
intent.putExtra('person', p)
startActivity(intent)
В приемнике onCreate()
,
val p = intent.getSerializableExtra('person') as Person
получит данные while Person
.