199

Estaba trabajando en fragmentos y encontré dos cosas, Activity y FragmentActivity, que se usan varias veces. Quiero saber que hay alguna diferencia entre estos dos, porque cuando cambié Activity con FragmentActivity, no tuvo ningún efecto en la aplicación.Diferencia entre Actividad y FragmentActivity

Respuesta

274

A FragmentActivity es una subclase de Activity que se ha creado para Android Support Package.

La clase FragmentActivity agrega un par de métodos nuevos para garantizar la compatibilidad con versiones anteriores de Android, pero aparte de eso, realmente no hay mucha diferencia entre los dos. Solo asegúrese de cambiar todas las llamadas a getLoaderManager() y getFragmentManager() a getSupportLoaderManager() y getSupportFragmentManager() respectivamente.

+4

Oye, no cambié las llamadas a getSupportLoaderManager() y getSupportFragmentManager() .. pero todavía está funcionando bien. – Rookie

+25

Eso es lo que lo hace tan peligroso: P. 'FragmentActivity' hereda los métodos' getLoaderManager' y 'getFragmentManager' de' Activity' y como resultado el compilador no se quejará.Lo más probable es que esté importando las clases incorrectas 'LoaderManager' y' FragmentManager' también. Asegúrese de importar estas clases del paquete de soporte ('android.support.v4.app'), * not * the Android SDK (' android.app'). –

+1

¿Podemos decir que si queremos usar fragmentos para la versión de Android 2.x necesitamos usar FragmentActivity nad para la versión que admite fragmentos que necesitamos para usar Activity? – Rookie

8
  1. Fragmento es una parte de una actividad que aporta su propia interfaz de usuario a esa actividad. Fragmento se puede pensar como una sub actividad. Donde la pantalla completa con la que el usuario interactúa se llama actividad. Una actividad puede contener fragmentos múltiples. Los fragmentos son principalmente una parte secundaria de una actividad.

  2. Una actividad puede contener 0 o varios fragmentos en función del tamaño de la pantalla. Un fragmento se puede reutilizar en actividades múltiples, por lo que actúa como un componente reutilizable en actividades.

  3. Un fragmento no puede existir de forma independiente. Debe ser siempre parte de una actividad. Donde la actividad puede existir sin ningún fragmento en ella.

+20

Esa es una respuesta muy buena y totalmente correcta ... pero no a la pregunta que se ha hecho aquí porque ni siquiera menciona FragmentActivity y por supuesto no explica de qué se trata, solo explica Fragmentos y Actividad, pero no es exactamente lo que es una FragmentActivity. Si te pregunto qué es un Lovebug, no es una respuesta si me dices qué es el "amor" y qué es un "error", eso no responde mi pregunta. – Mecki

+3

No es una respuesta a la pregunta. – ToolmakerSteve

1

se puede obtener toda la funcionalidad de Activity de FragmentActivity. De hecho, FragmentActivity tiene más funcionalidad).

Usando FragmentActivity puede construir fácilmente el formato de tabulación y de intercambio. Para cada pestaña puede usar diferentes Fragment (los fragmentos son reutilizables). Entonces, para cualquier FragmentActivity puede reutilizar el mismo Fragmento.

Aún puede utilizar la Actividad para páginas únicas como listar algo y editar el elemento de la lista en la página siguiente.

Recuerde también utilizar Activity si está usando android.app.Fragment; use si está usando android.support.v4.app.Fragment. Nunca conecte un android.support.v4.app.Fragment a un android.app.Activity, ya que esto provocará una excepción.

0

FragmentActivity es parte del support library, mientras que Activity es la clase predeterminada del marco. Son funcionalmente equivalentes.

Siempre debe usar FragmentActivity y android.support.v4.app.Fragment en lugar de las clases predeterminadas de plataforma Activity y android.app.Fragment. Usar los valores predeterminados de la plataforma significa que está confiando en cualquier implementación de fragmentos que se use en el dispositivo en el que se está ejecutando. A menudo tienen muchos años y contienen errores que desde entonces se han solucionado en la biblioteca de soporte.

+1

Nota: 'minSdkVersion' de la biblioteca de soporte es 14 desde la versión 26.x.x. –