Mejores Prácticas de Android – Comunicación entre Actividad y Fragmentos

Espero que ustedes puedan aclarar algo para mí.

He estado usando Android por cerca de 6 meses ahora y todavía estoy confundido sobre la mejor manera de comunicar entre la actividad y los fragmentos. Ya he leído la información en el sitio de desarrolladores de android .

Fragmento de la actividad

En este momento sé con 100% de certeza absoluta que una interfaz es la mejor manera de comunicarse desde el Fragmento a la Actividad. Es decir, crear una interfaz en tu Fragmento y dejar que tu Actividad la implemente. De esta manera puede llamar al método desde su interfaz dentro de su Fragmento y hacer que sea manejado por la Actividad (que implementa la interfaz).

Actividad a Fragmento

He aquí que no estoy seguro. El sitio de desarrolladores de android dice que para comunicarse con un fragmento tienes que poner tus objetos en un paquete.

Bundle bundle = new Bundle(); bundle.putInt(SOME_IDENTIFIER, myInt); 

Ahora he sido saben utilizar una clase Singleton de vez en cuando cuando tengo bastante alguna funcionalidad que puedo separar. Digamos que tengo un singleton llamado PersistenceService donde manejo todas las cosas relacionadas con la persistencia, por ejemplo, guardar algo en SharedPreferences . El PersistenceService mantendrá métodos como putMyString(String key, String myString) o putSomeObject(String key, SomeObject someObj) . De esta manera, una clase no tiene que manejar la persistencia en sí, sino que simplemente puede llamar al PersistenceService para hacerlo.

Ahora digo que tengo que actualizar algo en mi Fragmento, un TextView o algo así. Esto es lo que hago:

 String myString = PersistenceService.getInstance(getActivity()).getMyString(someKey); textView.setText(myString); 

Paso en un contexto ( getActivity() ) porque lo necesito para obtener las SharedPreferences .

Ahora mi pregunta real es:

¿Puedo recuperar mis datos en la actividad y pasarla al fragmento deseado a través de su paquete? ¿O simplemente hago referencia a mi derecho Singleton en mi Fragmento y acceder a los datos allí directamente.

No estoy atrapado ni nada, pero me gustaría saber lo que ustedes recomendarían. Cualquier consejo, observaciones, información, etc es muy apreciado.

3 Solutions collect form web for “Mejores Prácticas de Android – Comunicación entre Actividad y Fragmentos”

Esta es una pregunta muy amplia, y como dice el libro pragmático de pensamiento y aprendizaje, la respuesta a la mayoría de las preguntas en el software es "¡Todo depende!".

Y realmente lo hace, realmente todo depende, no hay regla dura en el software, "siempre" y "nunca" son palabras muy poderosas que no deben usarse en software, por lo que, diciendo siempre ir para "Bundle" info o Never go para un Singleton es un poco estúpido específicamente en el software, así que, en lugar de decirle exactamente qué usar, pregúntese qué es lo que mejor encaja en sus necesidades teniendo en cuenta cosas como, escalabilidad, capacidad de gestión de extensibilidad, etc. Por ejemplo:

Si usted va para Bundle, le da cierta flexibilidad a su fragmento, usted está creando algún tipo de componente independiente listo para trabajar con cualquier información que proporcione, por otro lado, si usted sabe que necesita ese fragmento sólo en ese lugar, y la información que pasará es de alguna manera compleja (no se puede pasar con un paquete), ¿por qué complicar tanto? Simplemente vaya para el Singleton si hace el trabajo simple y limpio.

Espero que mi punto esté bien explicado aquí, no hay reglas duras de una manera u otra, ser tan diligente como sea posible y no ir de una u otra manera sólo por pereza o negligencia, en lugar de ser analista si vale la pena ir de una manera u otro basado en sus necesidades, y siempre tener en cuenta que no porque fuiste de esa manera esta vez será cierto para todos sus escenarios.

¡Espero eso ayude!

¡Saludos!

Yo uso bundle cuando quiero enviar datos de fragmento a fragmento (de un fragmento a la actividad por interfaz, de la actividad a un fragmento por paquete).

Si los datos se usan en todos los fragmentos singleton es la mejor manera, alguna vez uso también una istancia de datos objcet en actividad que manipulo en fragmento por métodos públicos de actividad pero no creo que sea la mejor práctica.

Por favor, entiendan que 2 fragmentos no pueden comunicarse directamente entre sí, Necesitarán ayuda de la actividad bajo el contexto del cual se crean. Usando una interfaz :). Implementar la interfaz en un fragmento

interfaz StartCommunication

Defina la interfaz en la actividad cuyo fragmento de contexto está utilizando

 public class MainActivity extends Activity implements SendFragment.StartCommunication 
  • ¿Cuál es la principal ventaja y la desventaja de "no mantener las actividades" en android
  • Recyclerview de Android vs ListView con el usuario
  • Sencha Touch 2 - Desempeño de Android
  • ¿Cómo probar la función de sincronización de ejecución en android?
  • Android personalizado listview muy lento al desplazarse
  • Explicitamente liberando Mat con opencv 2.0
  • Cómo detener la creación excesiva de objetos en los teléfonos Samsung?
  • ¿Por qué el emulador de Android es tan lento? ¿Cómo podemos acelerar el emulador de Android?
  • Consejos para mejorar la tasa de llenado de OpenGL ES en Android
  • ¿Es esta una forma válida de mantener una referencia estática y Actividad / Contexto? ¿Por qué no debo hacer esto?
  • Estado emergente directamente desde coldstart
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.