2012-05-15 15 views

Respuesta

255

A Fragment es una sección de una Activity, que tiene:

  • su propio ciclo de vida
  • recibe sus propios eventos de entrada
  • puede ser añadido o eliminado, mientras que el Activity se está ejecutando.

A Fragment siempre debe estar incrustado en un Activity.

Fragments no forman parte de la API antes de HoneyComb (3.0). Si desea utilizar Fragments en una aplicación orientada a una versión de plataforma anterior a HoneyComb, debe agregar el Support Package a su proyecto y usar el FragmentActivity para almacenar su Fragments. La clase FragmentActivity tiene una API para tratar con Fragments, mientras que la clase Activity, anterior a HoneyComb, no lo hace.

Si su proyecto está dirigido solo a HoneyComb o más nuevo, debe usar Activity y no FragmentActivity para contener su Fragments.

Algunos detalles:

Use android.app.Fragment con Activity. Use android.support.v4.app.Fragment con FragmentActivity. No agregue el paquete de soporte Fragment a Activity, ya que provocará una excepción.

Una cosa a tener cuidado con: FragmentManager y LoaderManager tienen versiones de apoyo separados para FragmentActivity:

Si está utilizando un Fragment en un Activity (HoneyComb en adelante), llaman

  • getFragmentManager() para obtener android.app.FragmentManager
  • getLoaderManager() para obtener android.app.LoaderManager

si está utilizando un FragmentFragmentActivity en un (pre-HoneyComb), llame a:

  • getSupportFragmentManager() para obtener android.support.v4.app.FragmentManager.
  • getSupportLoaderManager() para obtener android.support.v4.app.LoaderManager

así, no Qué hacen

//don't do this 
myFragmentActivity.getLoaderManager(); 
//instead do this: 
myFragmentActivity.getSupportLoaderManager(); 

o

//don't do this: 
android.app.FragmentManager fm = myFragmentActivity.getSupportFragmentManager(); 
//instead do this: 
android.support.v4.app.FragmentManager fm = myFragmentActivity.getSupportFragmentManager() 

También es útil saber es que mientras que un fragmento tiene que ser incrustado en un Activity no tiene que ser parte del diseño Activity. Se puede usar como un trabajador invisible para la actividad, sin IU propia.

+5

Sin embargo, no se requiere que un fragmento sea parte del diseño de la actividad; también puede usar un fragmento sin su propia IU como trabajador invisible para la actividad. – uzay95

+1

@ uzay95 gracias por señalar esto. Agregué una sección al final para mencionarlo. –

+0

@GunnarKarlsson ¿Deberíamos agregar fragmento a fragmentActivity? – Dhasneem

14

FragmentActivity es nuestra actividad clásica con compatibilidad de fragmentos, nada más. Por lo tanto, se necesita FragmentActivity, cuando un Fragmento se adjuntará a la Actividad.

Well Fragment es un buen componente que copia los comportamientos básicos de la actividad, todavía no es un componente de aplicación independiente como actividad y debe adjuntarse a la actividad para funcionar.

Look here para más detalles

+1

BTW, Respuesta obsoleta, que solo se aplica a las aplicaciones que desean funcionar en dispositivos anteriores a API 11. – ToolmakerSteve

+0

@ToolmakerSteve ¿Puede proporcionar más detalles? Si es posible, ¿puede editar la respuesta con una versión actualizada? –

1

un FragmentActivity es una actividad ad hoc que contiene Fragmento. En estas pocas palabras te he explicado uno de los principales cambios importantes que, con android 3.0 (HoneyComb), el equipo android ha insertado en el sdk de Android.

Con este nuevo tipo de concepto, sus piezas de código y diseño se vuelven más flexibles y fáciles de mantener. Si buscas en google hay muchos ejemplos.

8

Piense en FragmentActivity como una clase de actividad normal que puede admitir fragmentos. Antes de honeycomb, una clase de actividad no podía generar Fragments directamente, por lo que esto es necesario en actividades que usan Fragments.

Si su distribución objetivo es Honeycomb y más allá puede extender fuera de Actividad en su lugar.

También un fragmento se debe considerar como una 'subactividad'. No puede existir sin una actividad. Siempre piensa en un fragmento como una subactividad y deberías ser bueno. Entonces la actividad sería el padre y el fragmento (s) del tipo de relación simbólica infantil.