class MainActivity : AppCompatActivity() {
companion object {
const val PERSON_EXTRA = "person"
}
private lateinit var binding: ActivityMainBinding
private val nextButtonListener = View.OnClickListener {
val person = Person("John Doe", 999, false)
val intent = Intent(this, SubActivity::class.java).apply {
putExtra(PERSON_EXTRA, person)
}
startActivity(intent)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.nextButton.setOnClickListener(nextButtonListener)
}
}
class SubActivity : AppCompatActivity() {
private lateinit var binding: ActivitySubBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivitySubBinding.inflate(layoutInflater)
setContentView(binding.root)
val data = intent.getSerializableExtra(MainActivity.PERSON_EXTRA) ?: return
if (data is Person) {
binding.nameTextView.text = data.name
binding.ageTextView.text = data.age.toString()
binding.isMarriedTextView.text = if (data.isMarried) "married" else "un married"
}
}
}
data class Person(
val name: String,
val age: Int,
val isMarried: Boolean = false
) : Serializable {
override fun toString(): String =
"name: $name, age: $age, ${if (isMarried) "Married" else "Un married"}"
}