¿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

  • Descartar DatePickerDialog al pulsar el botón Atrás
  • Lógica para usar varias vistas web en TabLayout para manejar problemas de memoria
  • Actualizar el estado seleccionado del cajón de navegación después de volver a pulsar
  • Map-Fragment (v2) Nullpointer (tema bajo Lollipop?)
  • Puntero nulo en ExpandedView para la búsqueda de ActionBar
  • Colocar un anuncio de banner para que se sitúe a continuación y se separe de ViewPager
  • Cómo mostrar el fragmento de entrada sobre el fragmento de salida mientras se anima.
  • ¿Las pestañas anidadas con el visor de desplazamiento en android?
  • PerferenceActivity con PreferenceFragment falla en el dispositivo con proguard okay sin proguard
  • FragmentActivity: No se puede convertir de Fragmento a clase derivada
  • Loader no se inicia después de llamar a initLoader ()?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.