class MainActivity : AppCompatActivity() {
companion object {
const val REQUEST_CODE = 100
}
private lateinit var binding: ActivityMainBinding
private val nextButtonListener = View.OnClickListener {
val intent = Intent(this, SubActivity::class.java)
startActivityForResult(intent, REQUEST_CODE)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.nextButton.setOnClickListener(nextButtonListener)
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == REQUEST_CODE) {
if (resultCode == RESULT_OK && data != null) {
val person = data.getSerializableExtra(SubActivity.PERSON_EXTRA) ?: return
if (person is Person) {
binding.nameTextView.text = person.name
binding.ageTextView.text = person.age.toString()
binding.isMarriedTextView.text = if (person.isMarried) "married" else "un married"
}
}
}
}
}
class SubActivity : AppCompatActivity() {
companion object {
const val PERSON_EXTRA = "person"
}
private lateinit var binding: ActivitySubBinding
private val backButtonListener = View.OnClickListener {
val person = Person("John Doe", 999, false)
val intent = Intent().apply {
putExtra(PERSON_EXTRA, person)
}
setResult(RESULT_OK, intent)
finish()
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivitySubBinding.inflate(layoutInflater)
setContentView(binding.root)
setResult(RESULT_CANCELED)
binding.backButton.setOnClickListener(backButtonListener)
}
}
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"}"
}