Come Passare Dati da Activity a Fragment Android con Bundle
In questa guida vediamo, per prima cosa, come passare dati da Activity a Fragment Android utilizzando il Bundle, illustrando i passaggi pratici in Java con esempi chiari e ben strutturati. Inoltre, in particolare, analizzeremo i casi d’uso più comuni, come ad esempio l’invio di stringhe, ID e oggetti semplici al Fragment durante una transazione, così da mantenere il codice leggibile, manutenibile e conforme alle standard ufficiali. A tal fine, quindi, il contenuto è pensato specificamente per sviluppatori Android junior e intermedi che vogliono applicare le best practice ufficiali e migliorare le loro competenze. In sintesi e per questo motivo, continua a leggere e segui passo passo la guida completa che seguirà.

In questo esempio, innanzitutto, andiamo a passare dati da un Activity a un Fragment in modo pratico e diretto. Inoltre, per specificare che la transazione include la modifica del frammento con la navigazione dello stack, è necessario chiamare il metodo FragmentTransaction.addToBackStack(). In questo modo, di conseguenza, sarà possibile tornare indietro premendo il pulsante stack; pertanto, la navigazione risulterà più coerente e naturale per l’utente finale, migliorando significativamente l’esperienza complessiva dell’applicazione.
Trasferire Dati da Activity a Fragment: il Layout XML
Activity_main.xml – Layout per Inviare Dati al Fragment
Di seguito, quindi, troviamo il layout XML del file activity_main.xml. In particolare, questo file definisce l’interfaccia principale dell’Activity, che include un campo di testo, un pulsante e un FrameLayout. Inoltre, quest’ultimo servirà come contenitore per il Fragment che verrà caricato successivamente.
<?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:gravity=”center”
android:orientation=”vertical”>
<EditText
android:id=”@+id/edt”
android:layout_width=”match_parent”
android:layout_height=”60dp”
android:hint=”Enter Name”
android:layout_marginTop=”20dp”/>
<Button
android:id=”@+id/button”
android:layout_width=”200dp”
android:layout_height=”50dp”
android:text=”Pass Data”
android:layout_gravity=”center” />
<FrameLayout
android:id=”@+id/frameLayout”
android:layout_width=”match_parent”
android:layout_height=”match_parent” />
</LinearLayout>
Fragment_1.xml – Layout per Ricevere Dati dall’Activity
A questo punto, passiamo al layout XML del Fragment. In questo file, pertanto, definiamo una semplice TextView che mostrerà il dato ricevuto dall’Activity. Di conseguenza, il Fragment sarà pronto per visualizzare qualsiasi stringa passata tramite Bundle.
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android“
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
android:orientation=”vertical”>
<TextView
android:id=”@+id/get_name”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:textSize=”30sp”/>
</LinearLayout>
Passare Parametri da Activity a Fragment: il Codice Java
Vediamo ora il codice Java del Fragment. In particolare, quindi, questo file si occupa di ricevere i dati inviati dall’Activity attraverso il Bundle. A tal proposito, utilizziamo il metodo getArguments() per estrarre il valore e visualizzarlo nella TextView.
Fragment1.java – Ricevere i Dati nel Fragment con Bundle
package com.example.passData.activities;
import android.app.*;
import android.widget.*;
import android.view.*;
import com.example.passData.*;
import android.os.*;
public class Fragment1 extends Fragment
{
String name;
public fragment1(String name) {
this.name = name;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_1, container, false);
TextView myName = view.findViewById(R.id.get_name);
myName.setText(name);
return view;
}
}
Infine, ecco il codice completo della MainActivity. In questo caso, dunque, creiamo un Bundle, inseriamo il dato da trasmettere e lo associamo al Fragment prima di avviare la transazione. In sintesi, grazie a questi passaggi, il dato sarà disponibile nel Fragment non appena questo viene caricato.
MainActivity.java – Inviare Dati al Fragment da Activity
import android.app.Activity;
import android.os.Bundle;
import com.example.passData.R;
import android.widget.*;
import android.view.*;
import android.app.*;
public class MainActivity extends Activity {
Button btn;
EditText userName;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn=findViewById(R.id.button);
userName = findViewById(R.id.edt);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String name=userName.getText().toString();
FragmentTransaction transaction=getFragmentManager() .beginTransaction();
transaction.addToBackStack(name);
transaction.replace(R.id.frameLayout,new Fragment1 (name)).commit();
}
} );
}
}