Solución:
Primero, asegúrese de People
clase implementa el Serializable
interfaz:
class People : Serializable {
// your stuff
}
Campos interiores de People
La clase también debe implementar el Serializable
interfaz, de lo contrario obtendrá un error de tiempo de ejecución.
Entonces debería funcionar:
fun launchNextScreen(context: Context, people: People): Intent {
val intent = Intent(context, NextScreenActivity::class.java)
intent.putExtra(EXTRA_PEOPLE, people)
return intent
}
Para recibir personas de Intent, deberá llamar a:
val people = intent.getSerializableExtra(EXTRA_PEOPLE) as? People
Implementar serializable en el objeto:
data class Object (
var param1: Int? = null,
var param2: String? = null
) : Serializable
o
class Object : Serializable {
var param1: Int? = null,
var param2: String? = null
}
Luego, puede pasar el objeto usando Intent:
val object = Object()
...
val intent = Intent(this, Activity2::class.java)
intent.putExtra("extra_object", object as Serializable)
startActivity(intent)
Finalmente, en Activity2 obtienes el objeto con:
val object = intent.extras.get("extra_object") as Object
Encontré una mejor manera de hacer esto:
En tu gradle:
apply plugin: 'org.jetbrains.kotlin.android.extensions'
android {
androidExtensions {
experimental = true
}
}
En su clase de datos:
@Parcelize
data class Student(val id: String, val name: String, val grade: String) : Parcelable
En actividad fuente:
val intent = Intent(context, Destination::class.java)
intent.putExtra("student_id", student)
context.startActivity(intent)
En actividad de destino:
student = intent.getParcelableExtra("student_id")
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)