However, Mohamad Seyedi's answer did the job. But it fails in the case of getting intent data from onActivityResult().
We can't get data using Activity's intent inside onActivityResult(). Below are the solutions I got.
Solution 1: Using extension function:
fun <T : Serializable?> Intent.getSerializable(key: String, m_class: Class<T>): T {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU)
this.getSerializableExtra(key, m_class)!!
else
this.getSerializableExtra(key) as T
}
Usage:
val myPOJOClass = intent.getSerializable("my_intent_key", MyPOJOClass::class.java)
Solution 2: Using regular function:
fun <T : Serializable?> getSerializable(intent: Intent, key: String, m_class: Class<T>): T {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU)
intent.getSerializableExtra(key, m_class)!!
else
intent.getSerializableExtra(key) as T
}
Usage:
val myPOJOClass = getSerializable(intent, "my_intent_key", MyPOJOClass::class.java)