¿Qué no se puede hacer en Fragments?

En la documentación del desarrollador de Google para Fragmentos, mencionan lo siguiente:

Para reutilizar los componentes de la interfaz de usuario de fragmentos, debe crear cada uno como un componente modular totalmente autónomo que define su propio diseño y comportamiento. Una vez que haya definido estos Fragmentos reutilizables, puede asociarlos con una Actividad y conectarlos con la lógica de la aplicación para realizar la interfaz de usuario global compuesta.

Lo que suena muy bien. Sin embargo, no entran en mucho más detalle que:

Toda la comunicación Fragmento a Fragmento se realiza a través de la Actividad asociada. Dos Fragmentos nunca deben comunicarse directamente.

¿Hay alguna cosa que debo evitar de usar / llamar / hacer en mis Fragmentos?

Supongo que el uso de Singleton rompería la reutilización introduciendo dependencias / expectativas externas.

¿Está bien llamar a Log.* , SharedPreferences , Toast y AlertDialog desde dentro de un Fragment , o es algo que debe evitar hacer?

¿Está bien llamar a getActionBar() o sería una tontería suponer que la Activity hosting tiene una ActionBar ?

Si el Fragment necesita emitir algo al usuario, ya sea un error o lo que sea, debe tomar la decisión en sí misma como dar salida a esto (Log, Toast, AlertDialog, etc) o debería enviar la cadena a una devolución de llamada y dejar que el alojamiento La actividad decide cómo y qué debe hacer?

Un ListFragment necesita ListFragment datos para presentar al usuario. ¿Debe buscar los datos en sí (a través de una solicitud de red en una clase interna AsyncTask ), o debe solicitar la Activity alojamiento para obtener los datos para ello?

Esta es una muy buena pregunta. Pero, como usted mencionó en su pregunta, la documentación oficial especifica sólo que los fragmentos no se comuniquen entre sí directamente.

Ahora, dependiendo de su implementación, es posible que desee que los métodos y las funcionalidades complejas se ejecuten a través de las devoluciones de llamada por la actividad asociada. Especialmente si es una funcionalidad que es común a más fragmentos.

En cuanto a las cosas simples, como llamar a Log. *, SharedPreferences, Toast, y AlertDialog encuentro que funciona muy bien si lo haces en tu Fragmento. Usted no quiere tener alto acoplamiento entre sus clases.

Además, un fragmento debe ser capaz de obtener datos y algo de salida al usuario por sí mismo, pero de nuevo, depende mucho de su aplicación y el grado de complejidad que se trata.

Yo sugeriría que aprender con el ejemplo. Especialmente formar muestras de la documentación oficial de Android. Deben hacerlo bien 🙂

EDITAR

Sólo asegúrese de que siempre utiliza devoluciones de llamada cuando navega a través de Fragmentos. Al igual que si selecciona un elemento de lista de un fragmento y desea ver los detalles en otro.

El siguiente código es de la documentación oficial en http://developer.android.com/training/basics/fragments/index.html

 @Override public void onAttach(Activity activity) { super.onAttach(activity); // This makes sure that the container activity has implemented // the callback interface. If not, it throws an exception. try { mCallback = (OnHeadlineSelectedListener) activity; } catch (ClassCastException e) { throw new ClassCastException(activity.toString() + " must implement OnHeadlineSelectedListener"); } } 

Los fragmentos pueden comunicarse directamente entre ellos, pero la solución anterior es más elegante y fácil de mantener.

  • Diseño de Android con barra de acciones y pestañas
  • ¿Por qué se crea un FrameLayout extra para fragmentos?
  • ¿Cómo implemento correctamente Immersive Full-Screen Mode en Android?
  • Cómo cerrar el fragmento actual mediante el botón como el botón Volver?
  • GetItem (int) para devolver Listfragment en FragmentPagerAdapter
  • Android reemplaza el fragmento dentro de un fragmento
  • ¿Debe un novato olvidarse de los fragmentos?
  • Menú como SKOUT y deslizamiento de una vista a otra mediante el toque en Android
  • Establecer el título de un SherlockActionBar
  • Programaticamente Ocultar Soft Keyboard en ViewPager.OnPageChangeListener onPageSelected ()?
  • OnAttach () no se llama en Fragmento
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.