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

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

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()); } } } 
  • Llamar setHasOptionsMenu (true) de un fragmento da como resultado múltiples llamadas a onCreateOptionsMenu en Activity
  • Fragmentos múltiples con diferentes listas de expansión para los mismos datos
  • Cómo encontrar listview en 'fragmento'
  • Retroceso y pérdida de memoria
  • Mostrar el botón de arriba en la barra de acción en las preferencias de la pantalla principal
  • ¿Cómo detener atrás pulsar el botón de volver a cada fragmento que se abrió en la actividad?
  • Listview no actualizar en fragmento con las pestañas viewpager
  • Uso de onBackPressed () en Fragmentos de Android
  • Fragmento isAdded () devuelve false en un Fragmento ya agregado
  • ActionBarSherlock, ViewPager, TabsAdapter Fragmentos de tabulación anidados
  • No se puede cambiar ID de contenedor de fragmento
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.