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
    }
}

Related Posts