Fragmento todavía existe después de quitar?
1 Agregue dos fragmentos a FragmentManager
FragmentManager fm = getSupportFragmentManager(); FragmentTransaction ft1 = fm.beginTransaction(); ft1.add(containerId, fragment1, "fragment1"); ft1.addToBackStack(null); ft1.commitAllowingStateLoss(); FragmentTransaction ft2 = fm.beginTransaction(); ft2.add(containerId, fragment2, "fragment2"); ft2.addToBackStack(null); ft2.commitAllowingStateLoss();
2 Cambiar configuración móvil Opciones de desarrollador-> No mantener actividades-> ON
- Fragmento de actualización de ViewPager en el dispositivo
- Cómo mover un DialogFragment fuera del centro?
- Pasar un objeto a fragmento o DialogFragment a la instancia
- Botón Haga clic dentro del fragmento para abrir un nuevo fragmento
- Reutilizando fragmentos en un fragmento
3 Quitar todos los fragmentos después de que la actividad fue recreada
FragmentTransaction ft3 = fm.beginTransaction(); for(Fragment f : fm.getFragments()) ft3.remove(f); ft3.commitAllowingStateLoss();
Mi pregunta es ¿por qué fm.findFragmentByTag ("fragment1") no es nulo después de quitar?
MinSdkVersion 17 targetSdkVersion 22 compileSdkVersion 22
- Selecciona la imagen de la galería que no funciona en Fragment Class en Android
- Mapfragment findFragmentById siempre null
- Controlador de medios que aparece en los fragmentos equivocados y que comienza antes de la pestaña se muestra
- fragmento de llamada dentro de la clase AppWidgetProvider
- Android - Fragment API para nivel de API <11
- No se puede obtener la barra de acciones en la clase de fragmento
- Google google maps con marcador dentro del fragmento
- Cómo borrar argumentos en Fragmento?
Prueba este código para eliminar el fragmento
FragmentManager manager = getActivity().getSupportFragmentManager(); FragmentTransaction trans = manager.beginTransaction(); trans.remove(myFrag); trans.commit(); manager.popBackStack();
Creo que no has agregado este método
manager.popBackStack();
o
getSupportFragmentManager().popBackStack()
Utilice opBackStackImmediate()
lugar de popBackStack()
que aseguran que el fragmento se elimina de backstack inmediatamente. El método de eliminación de transection no elimina fragmento de backstack sólo para transection.
en vez de
ft1.add(containerId, fragment1, "fragment1");
tratar
ft1.replace(containerId, fragment1, "fragment1");
Y usar el
fragmentmanager.popBackStack();
Debe commit
las transacciones individuales de eliminación de fragmentos.
Este código se confirmará después de completar el bucle
for(Fragment f : fm.getFragments()) ft3.remove(f); ft3.commitAllowingStateLoss();
En lugar de usar brackets
for(Fragment f : fm.getFragments()){ ft3.remove(f); ft3.commitAllowingStateLoss(); }
Prueba esto…
List<Fragment> list = getSupportFragmentManager().getFragments(); if (list == null) { Log.e("TAg", "No existing fragments" ); } for (Fragment frag : list) { // To save any of the fragments, add this check. // A tag can be added as a third parameter to the fragment when you commit it if (frag.getTag().equals("tag-name")) { continue; } getSupportFragmentManager().beginTransaction().remove(frag).commit(); }
public void popAll() { if (mFragmentManager != null) { if (!mOnPause && mFragmentManager.getBackStackEntryCount() > 0) { if (isFragmentOnStack(HomeFragment.TAG_NAME)) mFragmentManager.popBackStackImmediate(HomeFragment.TAG_NAME, 0); else mFragmentManager.popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); } else if (mFragmentManager.getBackStackEntryCount() > 0) { mTransactionList.clear(); mTransactionList.add(new FragmentPopAll()); } } }
- No hay eventos de pulsación de teclas para determinadas teclas en el navegador de Android
- Error de "archivo de paquete no firmado correctamente": detecte si ocurre o no con la aplicación de Google Play.