Saltar al contenido

Cómo pasar un objeto personalizado a través de la intención en kotlin

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)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *