Kotlin运行某些活动并访问类对象

时间:2018-11-03 01:58:54

标签: android kotlin

我按照本指南(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中使用它?

1 个答案:

答案 0 :(得分:0)

据我了解,您正在寻找extra

从另一个Activity开始时,您可以通过extra传递数据。

假设您有一个PersonString 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 数据。