Tengo un fragmento;Obtuvo la excepción: fragmento ya activo
MyFragment myFrag = new MyFragment();
puse de datos de paquete a este fragmento:
Bundle bundle = new Bundle();
bundle.putString("TEST", "test");
myFrag.setArguments(bundle);
Entonces, reemplazar fragmento de edad con éste y poner en backstack:
//replace old fragment
fragmentTransaction.replace(R.id.fragment_placeholder, myFrag, "MyTag");
//put on backstack
fragmentTransaction.addToBackStack(null);
//commit & get transaction ID
int transId = fragmentTransaction.commit();
tarde , I pop backstack con el ID por encima de la transacción (transId
):
//pop the transaction from backstack
fragmentManager.popBackStack(transId,FragmentManager.POP_BACK_STACK_INCLUSIVE);
Más tarde, puse de datos de paquete como argumento nuevo para mi fragmento (myFrag
):
//Got Java.lang.IllegalStateException: fragment already active
myFrag.setArguments(bundle);
Como se ve, mi código anterior se llevó excepción Java.lang.IllegalStateException: fragment already active
. No entiendo por quémyFrag
sigue activo a pesar de que he reventado la transacción desde backstack., de todos modos, desde que llegué a excepción pensé que no tengo más remedio de-activa el fragmento, Por lo tanto, lo que hice:
Fragment activeFragment = fragMgr.findFragmentByTag("MyTag");
fragmentTransaction.remove(activeFragment);
No estoy seguro de si mi código anterior puede realmente de-activa la fragmento, ya que no encontré cómo desactivar un fragmento. :(
Después de eso, cuando intento para establecer los datos de paquete a mi fragmento myFrag
de nuevo, yo todavía tengo el mismo error:
Java.lang.IllegalStateException: fragment already active
parece aún me quita el fragmento, que todavía está activo ... ¿Por Cómo de-activa un fragmento
¿Es su fragmento un singleton? Muéstrame tu método newInstance() si tienes uno. – clauziere
Espero que esto pueda ayudar a alguien. http://stackoverflow.com/a/15263921/541620 – theWook
http://stackoverflow.com/a/15263921/541620 Espero que esto pueda ayudar a alguien. – theWook