Els intents són una part fonamental del desenvolupament d'aplicacions Android. Són utilitzats per iniciar activitats, serveis i enviar difusions. En aquest tema, aprendrem què són els intents, els seus tipus i com utilitzar-los per comunicar-nos entre diferents components de l'aplicació.

Què és un Intent?

Un Intent és un objecte que proporciona una vinculació en temps d'execució entre components diferents, com ara activitats, serveis i receptors de difusió. Els intents poden ser utilitzats per:

  • Iniciar una nova activitat.
  • Iniciar un servei.
  • Enviar una difusió.

Tipus d'Intents

Hi ha dos tipus principals d'intents:

  1. Intents Explícits: S'utilitzen per iniciar un component específic dins de la mateixa aplicació. Es defineix el component destinatari de manera explícita.
  2. Intents Implícits: S'utilitzen per iniciar un component que pot pertànyer a una altra aplicació. No es defineix el component destinatari de manera explícita, sinó que es descriu l'acció a realitzar.

Intents Explícits

Els intents explícits són utilitzats quan es coneix el component destinatari. Per exemple, per iniciar una nova activitat dins de la mateixa aplicació:

Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent);

Intents Implícits

Els intents implícits són utilitzats quan no es coneix el component destinatari. En lloc d'això, es descriu l'acció que es vol realitzar. Per exemple, per obrir una pàgina web:

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.example.com"));
startActivity(intent);

Components d'un Intent

Un intent pot contenir diverses dades, incloent:

  • Acció: Una cadena que especifica l'acció a realitzar, com ACTION_VIEW, ACTION_SEND, etc.
  • Dades: Un URI que especifica les dades a operar, com una URL.
  • Categories: Informació addicional sobre l'acció que es vol realitzar.
  • Extra: Dades addicionals que es poden passar a través d'un Bundle.

Exemple Pràctic: Iniciar una Activitat amb un Intent Explícit

A continuació, es mostra un exemple pràctic de com iniciar una nova activitat utilitzant un intent explícit:

Activitat Principal (MainActivity.java)

package com.example.myapp;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                startActivity(intent);
            }
        });
    }
}

Segona Activitat (SecondActivity.java)

package com.example.myapp;

import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;

public class SecondActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
    }
}

Layout de l'Activitat Principal (activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center">

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Iniciar Segona Activitat" />
</LinearLayout>

Exercici Pràctic

Objectiu

Crea una aplicació que tingui dues activitats. La primera activitat ha de tenir un botó que, en ser premut, iniciï la segona activitat i li passi un missatge.

Passos

  1. Crea un nou projecte a Android Studio.
  2. Afegeix dues activitats: MainActivity i SecondActivity.
  3. A MainActivity, afegeix un botó que, en ser premut, iniciï SecondActivity i li passi un missatge utilitzant un intent explícit.
  4. A SecondActivity, mostra el missatge rebut en un TextView.

Solució

MainActivity.java

package com.example.myapp;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                intent.putExtra("EXTRA_MESSAGE", "Hola, Segona Activitat!");
                startActivity(intent);
            }
        });
    }
}

SecondActivity.java

package com.example.myapp;

import android.os.Bundle;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;

public class SecondActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);

        TextView textView = findViewById(R.id.textView);
        String message = getIntent().getStringExtra("EXTRA_MESSAGE");
        textView.setText(message);
    }
}

Layout de l'Activitat Principal (activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center">

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Iniciar Segona Activitat" />
</LinearLayout>

Layout de la Segona Activitat (activity_second.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Missatge Rebut" />
</LinearLayout>

Conclusió

En aquest tema, hem après què són els intents, els seus tipus i com utilitzar-los per comunicar-nos entre diferents components de l'aplicació. Hem vist exemples pràctics d'intents explícits i implícits, i hem realitzat un exercici pràctic per reforçar els conceptes apresos. En el proper tema, explorarem com treballar amb fragments per crear interfícies d'usuari més flexibles i modulars.

© Copyright 2024. Tots els drets reservats