Un Intent es un objeto que proporciona una descripción de una operación a realizar, como iniciar una actividad, enviar un mensaje de difusión o iniciar un servicio. Los Intent se utilizan para comunicarse entre componentes de la aplicación y también entre aplicaciones.
activity_main.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:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="35sp"
android:textStyle="bold"
android:layout_gravity="center"
android:layout_margin="50dp"
android:text="Escribe tu nombre"/>
<EditText
android:id="@+id/etName"
android:layout_width="300dp"
android:layout_margin="50dp"
android:layout_height="wrap_content"
android:layout_gravity="center"/>
<Button
android:id="@+id/btnBoton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:backgroundTint="@color/orange"
android:text="Botón"
android:textColor="@color/black"
android:layout_gravity="center"/>
</LinearLayout>
activity_result.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:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/tvResult"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Prueba"
android:textSize="35sp"
android:layout_gravity="center"
android:layout_marginTop="100dp"/>
</LinearLayout>
Llamada sin pasar parámetros
package com.javi.u10a
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val btnBoton=findViewById<Button>(R.id.btnBoton)
btnBoton.setOnClickListener {
val resultA= Intent(this,ResultActivity::class.java)
startActivity(resultA)
}
}
}
Paso de parámetros con extra
MainActivity.kt
package com.javi.u10a
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.Button
import android.widget.EditText
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val btnBoton = findViewById<Button>(R.id.btnBoton)
val etName = findViewById<EditText>(R.id.etName)
btnBoton.setOnClickListener {
if (etName.text.isNotEmpty()) {
val resultA = Intent(this, ResultActivity::class.java)
resultA.putExtra("NOMBRE",etName.text.toString())
startActivity(resultA)
}
}
}
}
ResultActivity.kt
package com.javi.u10a
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.TextView
class ResultActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_result)
val nombre:String = intent.extras?.getString("NOMBRE").orEmpty()
val tvResult=findViewById<TextView>(R.id.tvResult)
tvResult.text=nombre
}
}
Paso de parámetros con companion (clase estática en Kotlin)
MainActivity.kt
package com.javi.u10a
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.Button
import android.widget.EditText
class MainActivity : AppCompatActivity() {
companion object{
lateinit var nombre:String
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val btnBoton = findViewById<Button>(R.id.btnBoton)
val etName = findViewById<EditText>(R.id.etName)
btnBoton.setOnClickListener {
if (etName.text.isNotEmpty()) {
nombre=etName.text.toString()
val resultA = Intent(this, ResultActivity::class.java)
startActivity(resultA)
}
}
}
}
ResultActivity.kt
package com.javi.u10a
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.TextView
import com.javi.u10a.MainActivity.Companion.nombre
class ResultActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_result)
val tvResult=findViewById<TextView>(R.id.tvResult)
tvResult.text=nombre
}
}