vida studio fragments fragmentactivity example crear context ciclo activity android android-fragments android-fragmentactivity

android - studio - fragmentactivity context



Diferencia entre Fragment y FragmentActivity (4)

FragmentActivity es nuestra actividad clásica con soporte 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, aún no es un componente de aplicación independiente como actividad y debe adjuntarse a la actividad para funcionar.

Mire Fragment para más detalles

Mi pregunta es, aparte de las obvias diferencias de herencia, ¿cuáles son las principales diferencias entre Fragment y FragmentActivity ? ¿A qué escenarios se adapta mejor cada clase? Estoy tratando de entender por qué existen estas dos clases ...


Piense en FragmentActivity como una clase de actividad regular 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 su actividad fuera de Activity.

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.


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

  • su propio ciclo de vida
  • recibe sus propios eventos de entrada
  • se puede agregar o eliminar mientras se está ejecutando la Activity .

Un Fragment siempre debe estar incrustado en una Activity .

Fragments no son parte de la API antes de HoneyComb (3.0). Si desea utilizar Fragments en una aplicación orientada a una versión de plataforma antes de HoneyComb, debe agregar el Paquete de soporte a su proyecto y usar FragmentActivity para contener sus Fragments . La clase FragmentActivity tiene una API para tratar con Fragments , mientras que la clase Activity , antes de HoneyComb, no.

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

Algunos detalles:

Usa android.app.Fragment con Activity . Utilice android.support.v4.app.Fragment con FragmentActivity . No agregue el Fragment paquete de soporte a una Activity ya que provocará una Excepción.

Una cosa a tener en cuenta: FragmentManager y LoaderManager tienen versiones de soporte separadas para FragmentActivity:

Si está usando un Fragment en una Activity (HoneyComb y arriba), llame

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

Si está utilizando un Fragment en una FragmentActivity (pre-HoneyComb), llame al:

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

entonces, no hagas

//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 que, aunque un fragmento debe estar incrustado en una Activity , no tiene que ser parte del diseño de la Activity . Se puede usar como un trabajador invisible para la actividad, sin IU propia.


una FragmentActivity es una actividad ad-hoc que contiene Fragment. 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.