Evitar la recuperación de fragmentos en Android

Estamos usando fragmentos y no necesitamos que se recuperen automáticamente cuando se recrea la actividad. Pero Android cada vez que se Activity::onCreate(Bundle savedInstanceState) -> super.onCreate(savedInstanceState) , restaura Fragments incluso si usamos setRetainInstance (false) para esos Fragmentos.

Además, en esos Fragments Fragment.performCreateView() se llama directamente sin pasar por Fragment::onAttach() y así sucesivamente. Además, algunos de los campos son nulos dentro de Fragment restaurado …

¿Alguien sabe cómo evitar que Android restablezca fragmentos?

PS Sabemos que en caso de recrear la actividad para los cambios de configuración que podría hacerse mediante la adición de manifestar un ndroid:configChanges="orientation|screenSize|screenLayout ¿qué pasa con la recreación de la actividad en caso de limpieza automática de la memoria?

    5 Solutions collect form web for “Evitar la recuperación de fragmentos en Android”

    Terminamos agregando actividad:

     @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(null); } 

    Suprime todos los datos guardados en el ciclo de creación / recreación de una Actividad y evita la recreación automática de fragmentos.

    La respuesta de @goRGon fue muy útil para mí, pero tal uso causa serios problemas cuando hay algo más de información que necesita para reenviar a su actividad después de recrear.

    Aquí está la versión mejorada que sólo elimina "fragmentos", pero mantener todos los demás parámetros.

    El ID que se quita del paquete es parte de la clase android.support.v4.app.FragmentActivity como campo FRAGMENTS_TAG . Por supuesto, puede cambiar con el tiempo, pero no se espera.

     @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(createBundleNoFragmentRestore(savedInstanceState)); } /** * Improve bundle to prevent restoring of fragments. * @param bundle bundle container * @return improved bundle with removed "fragments parcelable" */ private static Bundle createBundleNoFragmentRestore(Bundle bundle) { if (bundle != null) { bundle.remove("android:support:fragments"); } return bundle; } 

    Quité los fragmentos en la actividad onCreate.

    Aquellos que obtuvieron NPE con ViewPager cuando usan este método descrito en la respuesta aceptada, anulen por favor

    ViewPager.onRestoreInstanceState(Parcelable state)

    Método y llamada

    super.onRestoreInstanceState(null);

    en lugar.

    Ver jerarquía en no restaurado automáticamente. Por lo tanto, en Fragment.onCreateView() o Activity.onCreate() , tiene que restaurar todas las vistas (desde xml o mediante programación). Cada ViewGroup que contiene un fragmento debe tener el mismo ID que cuando lo creó la primera vez. Una vez que se crea la jerarquía de vista, Android restaura todos los fragmentos y pone sus vistas en el grupo de ViewGroup derecho gracias al ID. Digamos que Android recuerda el ID del ViewGroup en el que estaba un fragmento. Esto ocurre entre onCreateView() y onStart() .

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.