Junior
¿Cómo pasar datos de una actividad a otra en Android?
sobes.tech AI
Respuesta de la IA
Los datos se pueden transmitir usando Intent:
-
En la Activity de origen: Coloca los datos en los Extras del
Intentusando métodos comoputExtra(String key, value).// Preparando el Intent val intent = Intent(this, TargetActivity::class.java) // Añadiendo datos intent.putExtra("myString", "Hola desde la primera Activity") intent.putExtra("myInt", 123) intent.putExtra("myBool", true) // Se pueden pasar objetos que implementen Parcelable o Serializable // intent.putExtra("myObject", myParcelableObject) // Iniciando la nueva Activity startActivity(intent) -
En la Activity de destino: Extrae los datos de los Extras del
Intentrecibido en el métodoonCreateoonNewIntent.// En onCreate() de la Activity de destino override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_target) // Obteniendo el Intent que inició esta Activity val intent = intent // Extrayendo datos por clave val myString = intent.getStringExtra("myString") val myInt = intent.getIntExtra("myInt", 0) // El segundo argumento es el valor por defecto val myBool = intent.getBooleanExtra("myBool", false) // Procesando los datos extraídos println("Cadena recibida: $myString") println("Número recibido: $myInt") println("Booleano recibido: $myBool") // Para objetos Parcelable o Serializable // val myObject = intent.getParcelableExtra<MyParcelableClass>("myObject") }
Otros métodos para transmitir datos, adecuados para escenarios más complejos o grandes volúmenes de datos:
ViewModelcompartido entre Fragmentos/Activities (a través de SharedViewModel): Conveniente para datos comunes entre componentes relacionados.Bundle(dentro de Extras del Intent):putExtraen realidad usa unBundleinterno.- Variables estáticas/singletons: Se debe usar con precaución, ya que pueden causar fugas de memoria y problemas de estado.
- Base de datos/SharedPreferences: Para almacenamiento persistente o transmisión de datos que requieren ser guardados.
- Event Bus (por ejemplo, EventBus, RxJava): Para transmitir eventos o datos entre componentes de forma asíncrona.
- File I/O: Guardar en archivos y leer desde ellos.