¿Debemos usar setTargetFragment ()? Pensé que los fragmentos no deberían comunicarse entre sí

Los tutoriales para desarrolladores de android me recomiendan usar las actividades del host de fragmentos para pasar alrededor de datos y lo que sea, así que ¿por qué hay un método set / get target fragment?

Mi aplicación hasta ahora contiene una actividad de host, y un fragmento, que tiene un botón que lanza un DialogFragment , en el que hay un botón que lanza otro DialogFragment . El uso de setTargetFragment/getTargetFragment ha hecho que este ordeal entero sea algo confuso, así que estoy pensando en reimplementar para permitir que mi actividad principal maneje los métodos DialogFragment.show través de la interfaz personalizada de mi fragmento principal.

¿Es esta la forma correcta de pensar? ¿O no hay ningún daño en el uso de setTargetFragment ? ¿Puede alguien proporcionar buenos y malos ejemplos de usarlo?

2 Solutions collect form web for “¿Debemos usar setTargetFragment ()? Pensé que los fragmentos no deberían comunicarse entre sí”

No creo que haya un daño implícito en el uso de setTargetFragment, sin embargo, sólo lo utilizaría en circunstancias muy específicas. Por ejemplo, si el fragmento de destino sólo va a ser utilizado por el fragmento (teniendo en cuenta la reutilización de objetos y el diseño de sus clases para ser reutilizable cuando sea posible) e incluso entonces, con moderación.

Usándolos demasiado, usted terminará para arriba con lo que usted está viendo – código confuso que es duro seguir y mantener. En primer lugar, al ordenar todo a través de su actividad mantener una jerarquía "plana" que es fácil de seguir y mantener.

Creo que la decisión de usar setTargetFragment o no es un estilo de codificación / filosófico que, con sabiduría y experiencia, "se siente" bien o mal. Tal vez en su caso, por la evidencia de que está cuestionando su antiguo código, que están ganando esa sabiduría 🙂

Además, puede terminar con la excepción de ningún fragmento de destino encontrado en el gestor de fragmentos. Esto sucede si después de la rotación (u otro cambio de configuración) el fragmento de destino no se readded al administrador de fragmentos en el momento en que se agregará el fragmento de llamador.

Imagine que tiene algún tipo de fragmento de confirmación que agrega de MainFragment como:

 ConfirmationFragment frag = new ConfirmationFragment(); frag.setTargetFragment(this, 0); getFragmentManager().beginFragmentTransaction().add(R.id.container, frag).commit(); 

Ahora en algún botón de confirmación haga clic en invocar un método de MainFragment llamando a:

 ((MainFragment)this.getTargetFragment()).onUserSelectedGoodButton(); 

Esto es bastante y simple, pero si girar la pantalla y por alguna razón ConfirmationFragment se agregará a FragmentManager antes de MainFragment , la excepción se lanzará, indicando que el fragmento de destino no se encuentra en el gestor de fragmentos

  • Android RecyclerView que se encuentra en un fragmento que se encuentra en un ViewPager no vuelve a cargar / refrescar las vistas si se alcanza el setOffscreenPageLimit
  • Fragmento de Android superpuesto por otro fragmento todavía se muestra y no onPause
  • Obtener fragmento actual de la pestaña AcciónBar
  • Interfaces de actividad de Android para fragmentos: try / catch bloques vs. instancia de cheques
  • Paquete de compatibilidad de Android - fragmento ... no conectado a la actividad
  • Android getListView () en error de fragmento
  • Android: añadir fragmento con dimensiones personalizadas
  • ¿Cómo cambiar el contenido del fragmento al transferir datos del fragmento después de buscar en RecyclerView?
  • Apertura suave del teclado de Android
  • ¿Hay una manera de establecer android: windowSoftInputMode por Fragment?
  • OnCreateOptionsMenu dentro de Fragmentos
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.