Cuando necesitamos enviar algunos datos de una actividad a otra, podemos usar intentos con la función putExtra() . Pero putExtra admite tipos de datos primitivos. Entonces, si necesitamos pasar y el usuario define el objeto, primero debemos serializarlo y luego enviarlo al destino. Mientras recibimos los datos, necesitamos deserializarlos. Serializaremos y deserializaremos objetos a JSON utilizando la biblioteca Gson.
Implementación paso a paso
Paso 1: Cree un nuevo proyecto en Android Studio usando kotlin.
Paso 2: crear una clase de datos definida por el usuario
Kotlin
package com.ayush.serialize_deserialize data class StudentInfo(val id: Int, val Name :String, val RollNo : Int)
Paso 3: Crear una nueva actividad donde enviaremos los datos
XML
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:gravity="center" android:orientation="vertical" android:layout_height="match_parent" tools:context=".SecondActivity"> <TextView android:id="@+id/tvId" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="ID" android:textStyle="bold" android:textColor="#7CB342" android:textSize="22sp"/> <TextView android:id="@+id/tvName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="NAME" android:textStyle="bold" android:textColor="#7CB342" android:layout_margin="4dp" android:textSize="22sp"/> <TextView android:id="@+id/tvRoll" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="ROLL" android:textStyle="bold" android:textColor="#7CB342" android:textSize="22sp"/> </LinearLayout>
Paso 4: ahora crearemos un objeto de clase definida por el usuario y lo convertiremos en datos JSON usando la función Gson().toJson() y lo enviaremos a la intención.
Kotlin
package com.ayush.serialize_deserialize import android.content.Intent import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import com.google.gson.Gson class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val stu01 = StudentInfo(1,"AMAN",10) val json = Gson().toJson(stu01) val intent = Intent(this,SecondActivity::class.java) intent.putExtra("data",json) startActivity(intent) } }
Paso 5: Extraeremos datos de la intención usando el método getExtra() y los deserializaremos usando Gson().fromJson().
Kotlin
package com.ayush.serialize_deserialize import android.content.Intent import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.TextView import com.google.gson.Gson class SecondActivity : AppCompatActivity() { lateinit var data : StudentInfo lateinit var tvId : TextView lateinit var tvName : TextView lateinit var tvRoll : TextView override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_second) tvId = findViewById(R.id.tvId) tvName = findViewById(R.id.tvName) tvRoll= findViewById(R.id.tvRoll) val json = intent.getStringExtra("data") data = Gson().fromJson(json,StudentInfo::class.java) tvId.text = data.id.toString() tvName.text = data.Name tvRoll.text = data.RollNo.toString() } }
Entonces, nuestra aplicación está lista y podemos ver el resultado.
Producción:
Publicación traducida automáticamente
Artículo escrito por ayushpandey3july y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA