Attualmente ho un contenitore "RELATIVE_LAYOUT" che sto usando per aggiungere il mio frammento. Sto utilizzando OnClickListener su un pulsante per caricare il layout XML del frammento nel contenitore RelativeLayout.Come aggiungere/rimuovere frammenti sul pulsante fare clic?
Quello che voglio ottenere è che quando premo il pulsante una volta, il frammento dovrebbe caricarsi ... e quando lo premo di nuovo il frammento dovrebbe essere rimosso. Ho già provato a utilizzare l'intero per identificare se il frammento è stato caricato, ma non è riuscito. Qualsiasi aiuto apprezzato ...
CODICE:
public class MainActivity extends Activity {
Button B1,B2;
int boolb1=0, boolb2=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
B1 = (Button)findViewById(R.id.btn1);
B2 = (Button)findViewById(R.id.btn2);
B1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
FragmentOne f1 = new FragmentOne();
if(boolb1==0)
{ft.add(R.id.frg1, f1);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
boolb1=1;}
else
{ft.remove(f1);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE);
boolb1=0;}
//ft.addToBackStack("f1");
ft.commit();
}
});
B2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
FragmentTwo f2 = new FragmentTwo();
if(boolb2==0) {
ft.add(R.id.frg2, f2);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
boolb2=1;
} else {
ft.remove(f2);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE);
boolb2=0;
}
//ft.addToBackStack("f2");
ft.commit();
}
});
}
Sì, vorrei solo aggiungere che l'approccio migliore è quello di rimuovere completamente "ha aggiunto" variabile e solo decidere da presention di frammenti in Gestione frammento .. in tal caso avrai meno lavoro con il ripristino dello stato dopo la rotazione dello schermo – Billda
Hai ragione, ho regolato il codice :) –
Ottima risposta ... un dubbio però, quando per la prima volta premo il pulsante, java crea un oggetto di FragmentOne f1 e passa il valore restituito da findFragmentByTag, ma il tag "tag" non è ancora associato a nessun frammento poiché lo facciamo nel blocco if. Quindi, non dovrebbe generare un errore ??? – Abhi9