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 obtenerandroid.app.FragmentManager
-
getLoaderManager()
para obtenerandroid.app.LoaderManager
Si está utilizando un Fragment
en una FragmentActivity
(pre-HoneyComb), llame al:
-
getSupportFragmentManager()
para obtenerandroid.support.v4.app.FragmentManager
. -
getSupportLoaderManager()
para obtenerandroid.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.