Mi pregunta es aparte de las diferencias de herencia obvias, ¿cuáles son las principales diferencias entre Fragmenty FragmentActivity? ¿Para qué escenarios se adapta mejor cada clase? Estoy tratando de entender por qué existen ambas clases ...
Mi pregunta es aparte de las diferencias de herencia obvias, ¿cuáles son las principales diferencias entre Fragmenty FragmentActivity? ¿Para qué escenarios se adapta mejor cada clase? Estoy tratando de entender por qué existen ambas clases ...
A Fragmentes una sección de un Activity, que tiene:
Activityestá ejecutando.A Fragmentsiempre debe estar incrustado en un Activity.
Fragmentsno son parte de la API antes de HoneyComb (3.0). Si desea usar Fragmentsen una aplicación dirigida a una versión de plataforma anterior a HoneyComb, debe agregar el Paquete de soporte a su proyecto y usar el FragmentActivitypara mantener su Fragments. La FragmentActivityclase tiene una API para tratar Fragments, mientras que la Activityclase, antes de HoneyComb, no.
Si su proyecto está dirigido solo a HoneyComb o más reciente, debe usarlo Activityy no FragmentActivitymantenerlo Fragments.
Algunos detalles:
Usar android.app.Fragmentcon Activity. Usar android.support.v4.app.Fragmentcon FragmentActivity. No agregue el paquete de soporte Fragmenta unActivity ya que provocará una excepción.
Algo a tener en cuenta: FragmentManagery LoaderManagertener versiones de soporte separadas para FragmentActivity:
Si está utilizando un Fragmenten un Activity(HoneyComb y superior), llame
getFragmentManager() Llegar android.app.FragmentManagergetLoaderManager() Llegar android.app.LoaderManagerSi está utilizando un Fragmenten un FragmentActivity(pre-HoneyComb), llame al:
getSupportFragmentManager() Llegar android.support.v4.app.FragmentManager .getSupportLoaderManager() Llegar android.support.v4.app.LoaderManagerentonces 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, si bien un fragmento debe incrustarse en un Activity, no tiene que ser parte del Activitydiseño. Se puede utilizar como un trabajador invisible para la actividad, sin interfaz de usuario propia.
FragmentActivity es nuestra actividad clásica con soporte de fragmentos, nada más. Por lo tanto, se necesita FragmentActivity, cuando se unirá un Fragment a Activity
Well Fragment es un buen componente que copia los comportamientos básicos de Activity, todavía no es un componente de aplicación independiente como Activity y necesita estar conectado a Activity para poder funcionar.
Mira aquí para más detalles
fuente
Piense en FragmentActivity como una clase de actividad normal que puede admitir Fragments. Antes del nido de abeja, una clase de actividad no podía incluir Fragmentos directamente, por lo que esto es necesario en actividades que usan Fragmentos.
Si su distribución objetivo es Honeycomb y más allá, puede extenderla fuera de la Actividad.
También un fragmento debe considerarse como una 'sub-actividad'. No puede existir sin una actividad. Piensa siempre en un fragmento como una sub-actividad y deberías ser bueno. Entonces, la actividad sería el padre y el fragmento (s) el niño de una relación simbólica.
fuente
FragmentActivity es una actividad ad-hoc que contiene Fragment. En estas pocas palabras, he explicado uno de los principales cambios importantes que, con Android 3.0 (HoneyComb), el equipo de 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 mantenibles. Si busca en Google, hay muchos ejemplos.
fuente