Android: Uso previsto de fragmentos con servicios, diálogos, etc.

He estado creando aplicaciones para Android por unos meses y estoy teniendo problemas con el uso previsto de Fragments .

Fragments supone que los Fragments son componentes reutilizables de la interfaz de usuario, pero ¿hasta dónde los hacen independientes?

Uno de los Fragments que he creado es un ListFragment de videos descargables. Por el momento he implementado todos los métodos dentro del Fragment con poco o ninguno de los métodos llamando a la Activity host. El Fragment llama a la Activity por algunas cosas menores, pero todo como descargar archivos y encontrarlos en el almacenamiento externo es hecho por el Fragment .

El 90% de las veces me parece que es la forma más fácil de implementarlo, pero hay algunas veces que simplemente no funciona.

Un ejemplo es un diálogo de confirmación para eliminar un video en mi ListFragment . El diálogo es un DialogFragment así que está unido a la Activity pero todos los métodos de la actualización y de la cancelación de UI están dentro del ListFragment . Así que termino con el DialogFragment llamando a la Activity sólo para llamar al ListFragment .

Otro ejemplo es la vinculación a un Service . ¿Puedo enlazar la Activity al Service o simplemente al Fragment ? La Activity no tiene ningún uso para el Service pero es un Fragment supuesto para estar haciendo todo el trabajo de comenzar y mantener un Service ? Si no significa que todas las llamadas de Fragments al Service tienen que pasar por la Activity para que el Fragment ya no esté solo.

Me pregunto si estoy tomando la idea independiente solo demasiado lejos, es un Fragment lugar se supone que son mínimamente autónomos y en realidad dependen de la Activity acogida para todo el trabajo pesado?

Gracias por cualquier ayuda.

¡Una pregunta muy interesante!

Normalmente trato de mantener mis fragmentos tan aislados como sea posible. Eso significa que por lo general no les dejo saber nada acerca de ellos a excepción de su propia actividad. Es entonces el papel de la actividad (si usted me pregunta) para proporcionar lo que nunca es necesario para el fragmento.

En la práctica, esto significa que mis fragmentos nunca poseen su propio contenido, como un proveedor de contenido o un DAO personalizado. La actividad (o – Dios no lo permite – la aplicación) la posee y luego proporciona sólo un subconjunto de los datos, como un cursor, un objeto de dominio o un adaptador, al fragmento.

Esto también significa que cuando un fragmento modifica un elemento tiene que pedir a la actividad que persista los cambios. O si un elemento debe ser eliminado, el fragmento tiene que pedir a la actividad que muestre la interfaz de usuario correspondiente para esa operación (sí, es técnicamente posible dejar un fragmento mostrar otro fragmento, pero normalmente intento evitarlo en la medida de lo posible) .

Cuando se trata de servicios y vinculante a ellos realmente no sé qué sugerir, ya que realmente depende del servicio y lo que está haciendo. Si está descargando contenido nuevo de Internet en su servicio, parece rectificado permitir que la actividad maneje el enlace (ya que es la actividad que necesita guardar los datos, de acuerdo con la discusión anterior). Si usted, por otro lado, está calculando algo específico, basado en sus datos aislados (por ejemplo, descifrando un archivo o algo así), entonces podría hacer que el fragmento maneje esa parte.

En una perspectiva aún mayor, pronto se da cuenta de que una configuración, tal como se ha descrito anteriormente, dará nacimiento a algunas interfaces de devolución de llamada ya que cada fragmento necesita establecer un contrato para su actividad. Por lo tanto, para los proyectos más pequeños a veces sucede que anulo mi propio fragmento-pardigms.

También no puedo dejar de notar que al usar fragmentos, mis aplicaciones tienden a ser muy MVC orientado en su arquitectura. Les dejo a ustedes ya los futuros lectores que decidan si es algo bueno o malo 😉

Aclamaciones

  • Aplicación de Android que se estrella (fragmento y xml onclick)
  • Cómo utilizar fragmentos con kotlin
  • Cómo hacer un fragmento desplazable con un ListView
  • Reproducción de Honeycomb GMail UI con fragmentos
  • Fragmento getView () siempre devuelve null para Fragments creado por un FragmentStatePagerAdapter
  • Vista de desplazamiento horizontal en páginas de desplazamiento horizontal
  • ¿Cómo actualizar un fragmento después del cambio de idioma se aplica en android?
  • Obtener fragmento actual y guardar en onSaveInstanceState () Método para la orientación de pantalla
  • El comportamiento de popBackStack () difiere después de la actualización de la biblioteca de soporte de 23.1.1 a 25.1.0
  • Fragmento isInLayout devuelve false
  • Cómo cambiar la pestaña Color del indicador por programa
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.