es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cuál es el número recomendado de valores que puedo pasar a través de un paquete entre fragmentos antes de tener que refactorizar y usar viewModels compartidos?

Digamos que hay 2 escenarios diferentes:

  1. Tengo un valor para pasar entre Fragmentos (asuma una ID)

  2. Tengo 10 valores (asuma una clase Persona que no implementa Parcelable)

Conozco 2 formas de pasar datos entre Fragmentos (sin considerar la librería Navigation Component):

  1. Usando un Bundle y pasando los datos al Fragmento de destino.

  2. Usando un ViewModel compartido de Android entre Fragmentos y observando los datos en vivo.

Definitivamente, es fácil usar el enfoque #1 pero necesita manejar valores nulos/vacíos y las etiquetas utilizadas.

El enfoque #2 parece ser más seguro y sigue lógicamente el enfoque de la arquitectura de Android, a costa de código extra.

Mi pregunta es, ¿cuándo usar cada enfoque? ¿Hay alguna recomendación definida por Google?

Actualización:

Por el bien del argumento, digamos que Fragmento1 contiene un RecyclerView respaldado por un Fragment1ViewModel. Fragmento2 es un Fragmento de hoja inferior (extendido a partir de BottomSheetDialogFragment). Cuando el usuario hace clic en un elemento en el RecyclerView de Fragmento1, abrimos la hoja inferior (Fragmento2). Ahora, ¿se sugiere convertir Fragmento1ViewModel en un ViewModel compartido para pasar los datos entre Fragmentos?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Depende de los datos que necesites pasar entre los fragmentos.

    Si solo necesitas pasar un valor (por ejemplo, un ID), entonces utilizar un Bundle es el enfoque más sencillo y directo. Solo necesitas asegurarte de manejar valores nulos o vacios y las etiquetas utilizadas.

    Si necesitas pasar múltiples valores (por ejemplo, una clase Persona que no implementa Parcelable), entonces utilizar un ViewModel compartido es el mejor enfoque. Esto sigue el enfoque de la arquitectura de Android y es más seguro, pero requiere más código.

    En tu ejemplo, se sugiere convertir Fragment1ViewModel en un ViewModel compartido para pasar los datos entre Fragment1 y Fragment2.

Comments are closed.