Android: Intent

Gli Intent sono un potente strumento che permette di far comunicare le diverse parti di un’app o persino app diverse tra loro. Pensa a un Intent come un messaggero: il suo compito è portare un messaggio o un’azione da un punto all’altro della tua app.

Esistono due tipi principali di Intent:

  • Intent espliciti: vengono utilizzati per passare da una Activity a un’altra all’interno della stessa app. Ad esempio, immagina di avere un pulsante per aprire una schermata dei dettagli. Ecco come lo implementi:
Intent intent = new Intent(this, DetailActivity.class);
startActivity(intent);
  • Intent impliciti: questi, invece, permettono di eseguire azioni fuori dalla tua app, come aprire una pagina web, condividere contenuti o scattare una foto. Per esempio:
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("https://www.google.com"));
startActivity(intent);

Exstras

Ma come passare i dati tra una Activity e l’altra? Facile! Con i cosiddetti Extras.

Ecco un esempio:

Intent intent = new Intent(this, DetailActivity.class);
intent.putExtra("nome", "Samuele");
startActivity(intent);

E nella DetailActivity, recuperi il dato così:

String nome = getIntent().getStringExtra("nome");

Conclusione

Gli Intent sono fondamentali per creare app dinamiche e interattive. Nel tuo progetto puoi utilizzarli anche per avviare un servizio, trasmettere broadcast o persino integrare funzionalità di altre app.

Se ti interessa saperne di più, fammelo sapere nei commenti.

Video su YouTube

Codice completo

  • 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:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center"
    tools:context=".MainActivity">

   <Button
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="Vai all'activity 2"
       android:id="@+id/avviaActivity"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Vai al mio Blog"
        android:id="@+id/blog"/>

</LinearLayout>
  • MainActivity.java

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;


import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;


public class MainActivity extends AppCompatActivity {

    Button avviaActivity;

    TextView blog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main);
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
            Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
            return insets;
        });
        Log.e("STATO","OnCreate Stato");

        avviaActivity = findViewById(R.id.avviaActivity);
        blog = findViewById(R.id.blog);

        avviaActivity.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent avviaActivity = new Intent(MainActivity.this, MainActivity2.class);
                avviaActivity.putExtra("nome","Samuele");
                startActivity(avviaActivity);
            }
        });

        blog.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent avviaBlog = new Intent(Intent.ACTION_VIEW);
                avviaBlog.setData(Uri.parse("https://samuelefilincieri.com/"));
                startActivity(avviaBlog);
            }
        });

    }

/*
    @Override
    protected void onStart() {
        super.onStart();
        Log.e("STATO","onStart Stato");
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.e("STATO","onResume Stato");
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.e("STATO","onPause Stato");
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.e("STATO","onStop Stato");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.e("STATO","onDestroy Stato");
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        Log.e("STATO","onRestart Stato");
    }
*/
}
  • activity_main2.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:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center"
    tools:context=".MainActivity2">

    <TextView
        android:id="@+id/benvenuto"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Benvenuto nell'activity 2"
        android:textSize="20sp"/>

</LinearLayout>
  • MainActivity2.java

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

public class MainActivity2 extends AppCompatActivity {

    TextView benvenuto;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main2);
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
            Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
            return insets;
        });

        benvenuto = findViewById(R.id.benvenuto);

        Intent intent = getIntent();
        String nome = intent.getStringExtra("nome");

      benvenuto.setText("Benvenuto " + nome);
    }
}

Lascia una risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Share via
Copy link
Verificato da MonsterInsights