我按照本指南(How to run a certain activity in Android Studio?)进行了除主要活动之外的另一项活动。
我有一个GetUser.xml和ShowUser.xml布局。 在GetUser.xml中,用户可以输入其姓名和年龄。
我有一个带有构造函数的用户类,该类在GetUser.kt中输入名称和年龄。我使用以下值初始化User对象:名称,我从GetUser的输入字段中获得的年龄。
现在,当我运行其他活动ShowUser时,我希望访问该对象,以便获取值并将其显示在ShowUser.xml中。
我的问题是如何从GetUser.kt访问此对象并在ShowUser.kt中使用它?
答案 0 :(得分:0)
据我了解,您正在寻找extra
。
从另一个Activity
开始时,您可以通过extra
传递数据。
假设您有一个Person
和String name
的班级int age
。
有两种简单的方法。
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
的{{1}}上,您可以接收此数据并使用它创建对象。
onCreate()
2。发送整个实例
如果您要发送的类太大而无法使用方法1,则可以尝试将其作为自身发送。
为此,您需要为您的课程实现val name = intent.getStringExtra('name')
val age = intent.getIntExtra('age')
val combinedPersonData = Person(name, age)
或Serializable
。
Parcelable
确保类中的所有成员都可以序列化或为原始类型。
以此,您可以将person对象作为可序列化对象发送。
class Person(val name: String, val age: Int): Serializable { ... }
在接收者的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
数据。