En mi aplicación tengo una actividad y agrego dos fragmentos en tiempo de ejecución. Necesito intercambiar estos dos fragmentos simultáneamente. Fragmento 1 consiste en un botón y quiero que cuando haga clic en ese botón, el fragmento 1 se mueva al lado derecho de la pantalla y otro fragmento al lado izquierdo de la actividad.Intercambia dos fragmentos simultáneamente
En el método onClick del botón i hemos probado algo como esto
@Override
public void onClick(View v) {
FragmentTransaction ft = getFragmentManager().beginTransaction();
Fragment newFragment = getFragmentManager().findFragmentById(R.id.pageA);
ft.remove(newFragment);
Fragment newFragmentB = getFragmentManager().findFragmentById(R.id.pageB);
ft.remove(newFragmentB);
ft.add(R.id.pageB, newFragment);
ft.add(R.id.pageA, newFragmentB);
ft.addToBackStack(null);
ft.commit();
}
pero estoy consiguiendo el error siguiente
java.lang.IllegalStateException: Can't change container ID of fragment PageA{40653da0 #0 id=0x7f060001}: was 2131099649 now 2131099650
Quiero algo como esto cuando hago clic en el botón en la página A entonces, la posición de la página A y la página B deberían intercambiarse entre sí.
es decir, lo que también encontré que no funciona en honeycomb. Nunca lo intenté en ICS. entonces podría ser un problema de Android –
Funciona en ICS siempre que elimine y agregue un fragmento en dos transacciones separadas (eche un vistazo al enlace de arriba para ver cómo se hace) – Matthew