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ómo puedo definir el diseño de un fragmento desde XML?
- BadTokenException: No se puede agregar la ventana
- Cómo extender la actividad de dos clases de Android?
- Oyente de ubicación en el servicio de fondo Android
- Android: ¿El menú contextual no aparece para ListView con los miembros definidos por LinearLayout?
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(); } }); }
- Android: java.lang.IllegalStateException: Ya conectado
- Cómo cambiar la cámara Android a la vertical en la vista de superficie?
- ¿Dónde hay una lista de intentos disponibles en Android?
- Mi aplicación se bloquea, ¿cómo implementar Threads en ella?
- ¿Llamar a la función PHP desde android?
- Android FragmentTabHost - ¿Todavía no está completamente horneado?
- ¿Por qué se definen los métodos del ciclo de vida en la clase de actividad con el especificador de acceso protegido
- Comportamiento extraño en la sentencia do / while en Galaxy S5 y Android 5.1.1
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 ... }