Cómo agregar / quitar Fragmento en el botón haga clic?

En la actualidad tengo un contenedor "RELATIVE_LAYOUT" que estoy usando para agregar mi fragmento. Estoy utilizando OnClickListener en un botón para cargar el fragmento XML en el contenedor RelativeLayout.

Lo que quiero lograr es que cuando presione el botón una vez, el fragmento debe cargar … y cuando vuelva a presionar el fragmento debe ser eliminado. Ya he intentado utilizar entero para identificar si el fragmento está cargado, pero no. Cualquier ayuda Apreciado …

CÓDIGO:

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(); } }); } 

Tu problema es que creas un nuevo Fragment cada vez que haces clic en el Button . Necesita obtener una referencia al Fragment añadido actualmente y luego eliminarlo.

Además, ya no es necesario utilizar el indicador. Al agregar el Fragment , puede etiquetarlo . Al eliminar el Fragment , puede utilizar la etiqueta utilizada para agregar el Fragment para obtener una referencia al Fragment añadido actualmente.

He aquí un ejemplo de cómo debería hacerlo:

 private Button B1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); B1 = (Button)findViewById(R.id.btn1); B1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { FragmentManager fm = getFragmentManager(); FragmentTransaction ft = fm.beginTransaction(); FragmentOne f = (FragmentOne) fm.findFragmentByTag("tag"); if(f == null) { // not added f = new FragmentOne(); ft.add(R.id.frg1, f, "tag"); ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); } else { // already added ft.remove(f); ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE); } ft.commit(); } }); // and so on ... } 
  • Android Detener la notificación de brindis por programación?
  • Cómo adjuntar un PDF a un correo electrónico de la aplicación Android - El tamaño del archivo es cero
  • La conexión a un dispositivo Bluetooth falla en el sueño profundo
  • Descargar archivo pdf y guardar en tarjeta SD
  • Cómo obtener el índice seleccionado de un grupo de radio en Android
  • Android Frame by Frame Problema de animación en elementos en un CursorAdapter
  • Cómo dar formato a longs en android para siempre mostrar dos dígitos
  • Cómo reproducir AsyncTask de Android en Java código puro
  • Android NumberPicker envuelve valores cuando se cambian los valores mostrados
  • ¿Un buen tutorial para usar AccountManager en Android?
  • ¿Qué es una clase de adaptador?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.