utilizar studio propiedades new implement container android fragment fragmenttransaction

new - propiedades de fragment en android studio



Cuándo usar los métodos de adjuntar y separar FragmentTransaction (1)

Creo que es mejor echar un vistazo a la definición de Separar y Eliminar en FragmentTransaction Documentation para comprender lo que está sucediendo.

Despegar

Separar el fragmento dado de la interfaz de usuario. Este es el mismo estado que cuando se coloca en la pila posterior: el fragmento se elimina de la interfaz de usuario, sin embargo, su estado todavía está siendo administrado activamente por el administrador de fragmentos. Al entrar en este estado se destruye su jerarquía de vista.

retirar

Eliminar un fragmento existente. Si se agregó a un contenedor, su vista también se elimina de ese contenedor.

Significa:

Al separar , solo destruye la vista del fragmento pero mantiene su estado en el administrador de fragmentos. Sin embargo, al eliminar , eliminará el fragmento y su estado del administrador de fragmentos; además, eliminará la vista de fragmentos si se agregó a un contenedor de IU. Así que ambos destruyen la vista del fragmento, pero la separación mantiene el estado del fragmento en el administrador de fragmentos.

Ahora es el momento de echar un vistazo a adjuntar y agregar.

Añadir

Agregar un fragmento al estado de actividad. Este fragmento también puede tener opcionalmente su vista (si Fragment.onCreateView devuelve un valor no nulo) en una vista de contenedor de la actividad.

Adjuntar

Vuelva a adjuntar un fragmento después de haberlo eliminado previamente de la interfaz de usuario con separar (Fragmento). Esto hace que su jerarquía de vistas se vuelva a crear, se adjunte a la interfaz de usuario y se muestre.

Significa:

Después de agregar Fragmento, se agregará al estado de actividad y su vista se agregará a la vista de Contenedor definida. Pero al adjuntar, no se mostrará nada si el fragmento no se ha agregado a la IU. Simplemente se adjunta al gestor de fragmentos. Sin embargo, si la vista ya se agregó a un contenedor en la interfaz de usuario y luego se desconectó, al adjuntarla se mostrará nuevamente en su contenedor. Finalmente, puede usar adjuntar y separar si desea destruir la vista de fragmento temporalmente y desea mostrar y construir su vista en el futuro sin perder su estado dentro de la actividad.

Acabo de revisar la documentación de los métodos attach() y detach() de FragmentTransaction :

attach() : vuelva a adjuntar un fragmento después de que se haya separado previamente de la interfaz de usuario con detach(Fragment) . Esto hace que su jerarquía de vistas se vuelva a crear, se adjunte a la interfaz de usuario y se muestre.

Bueno, qué significa eso?

  1. Más específicamente, vi un ejemplo:

    mMapFragment = new MapFragment(); ft.beginTransaction(mMapFragment) .attach() .add(R.id.container, mMapFragment) .commit();

    Borre el attach() y lo intenté de nuevo: no noté ninguna diferencia. ¿Qué hace el attach en este ejemplo? ¿Cuál es la diferencia en comparación con esto?

    ft.beginTransaction() .add(R.id.container, mMapFragment) .commit();

  2. En caso de que el ejemplo anterior no sea lo suficientemente bueno como para mostrar la diferencia ... solo quiero saber cuándo debemos llamar a attach() y detach() explícitamente. Sería mejor si pudiera explicar la diferencia con respecto a agregar / eliminar / reemplazar.