App Tutorial

Cambiare Fragment Android: Guida Completa con FragmentManager e Java

Cambiare Fragment Android con FragmentManager in Java

In questa guida pratica, innanzitutto vedremo come cambiare Fragment Android in modo sicuro e strutturato usando FragmentManager e FragmentTransaction in Java. Inoltre imparerai quando ha senso cambiare fragment android in risposta ai click di un pulsante, per esempio quando vuoi aggiornare solo una parte dell’interfaccia. In seguito, capirai come gestire più layout all’interno della stessa Activity e quali sono i casi d’uso più comuni nelle app reali; di conseguenza potrai progettare schermate più flessibili e modulari. Allo stesso modo, il contenuto è pensato per sviluppatori Android alle prime armi o di livello intermedio e, tuttavia, include concetti utili anche a chi ha già un po’ d’esperienza. Infine, segui questa guida per vedere tutti i passaggi in dettaglio e, quindi, applicarli nei tuoi progetti.

Cos’è un Fragment Android e quando cambiarlo

Un Fragment è un componente Android che  può essere inserito in un file Activity e, in particolare, può essere utilizzato per strutturare l’interfaccia in parti riutilizzabili. Inoltre, ha un proprio ciclo di vita e può gestire i propri eventi di input, poiché definisce e gestisce il proprio layout. In questo modo, quindi, utilizzando FragmentManager  e FragmentTransaction possiamo interagire con i frammenti che si trovano all’interno del nostro layout. In particolare, in questo esempio andiamo a creare due frammenti e un  pulsante per visualizzare il rispettivo frammento quando si fa clic; in sintesi, a tal fine sfrutteremo le operazioni di sostituzione e visualizzazione dei frammenti.

Struttura del Progetto per Cambiare Fragment Android

Activity_main.xml
<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout
xmlns:android=”http://schemas.android.com/apk/res/android&#8221;
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:gravity=”center”
android:orientation=”vertical”>

<Button
android:id=”@+id/button”
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:text=”Change Fragment”/>
<FrameLayout
android:id=”@+id/frameLayout”
android:layout_width=”match_parent”
android:layout_height=”match_parent”/>
</LinearLayout>

Fragment_1.xml
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android&#8221;
    android:layout_width=”fill_parent”
    android:layout_height=”fill_parent”
    android:orientation=”vertical”>
   
<TextView
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”First Fragment”
android:textSize=”50sp”/>
</LinearLayout>

Fragment_2.xml
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android&#8221;
    android:layout_width=”fill_parent”
    android:layout_height=”fill_parent”
    android:orientation=”vertical”>
   
<TextView
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”Second Fragment”
android:textSize=”50sp”/>
</LinearLayout>

Implementazione con FragmentManager in Java

MainActivity.java
package com.example.changeFragment.activities;

import android.app.Activity;
import android.os.Bundle;
import com.example.changeFragment.R;
import android.widget.*;
import android.view.*;
import android.app.*;

public class MainActivity extends Activity {
Button button;
boolean result=false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

button=findViewById(R.id.button);

button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(!result){
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.frameLayout,new Fragment1()).commit();

button.setText(“Fragment 1”);
result =true;
}else {
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.frameLayout,new Fragment2()).commit();

button.setText(“Fragment 2”);
result = false;
             }
}
         
      });
    }

}

In definitiva, per approfondire, consulta la documentazione ufficiale Android sui Fragment; inoltre, in particolare, puoi fare riferimento alla riferimento API di FragmentManager, per questo motivo avrai una visione più completa dell’argomento.

Codice Completo per Cambiare Fragment con FragmentManager

Fragment1.java

package com.example.changeFragment.activities;
import android.view.*;
import android.os.*;
import com.example.changeFragment.R;
import android.app.*;
public class Fragment1 extends Fragment
{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_1, container, false);
}

Fragment2.java
package com.example.changeFragment.activities;
import android.view.*;
import android.os.*;
import android.app.*;
import com.example.changeFragment.R;
public class Fragment2 extends Fragment
{

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

return inflater.inflate(R.layout.fragment_2, container, false);
}

}