Vengo de iOS donde es fácil y simplemente usas un UIViewController. Sin embargo, en Android las cosas parecen mucho más complicadas, con ciertos componentes de UIC para niveles de API específicos. Estoy leyendo BigNerdRanch para Android (el libro tiene aproximadamente 2 años) y sugieren que use Activity
para alojar mi FragmentActivities
. Sin embargo, pensé que Activity
estaba en desuso.
Entonces, para el nivel 22 de API (con un soporte mínimo para el nivel 15 o 16 de API), ¿qué debo usar exactamente para alojar los componentes y para los componentes mismos? ¿Hay usos para todos estos, o debería usar uno o dos casi exclusivamente?
FragmentActivity
ies. Usted solo alojaFragment
s. En las versiones más recientes de Android, laActivity
clase en sí se ha actualizado para alojarlas directamente. Para admitir versiones anterioresFragmentActivity
se introdujo.Activity
admitió unaActionBar
. Esto fue compatible con versiones anteriores hasta laActionBarActivity
primera, que ahora ha quedado en desuso y reemplazado porAppCompatActivity
. Dado que ambas clases se extienden,FragmentActivity
también admitenFragment
s de alojamiento .Respuestas:
No.
Activity
Es la línea de base. Toda actividad heredaActivity
, directa o indirectamente.FragmentActivity
es para usar con el backport de fragmentos encontrados en las bibliotecassupport-v4
ysupport-v13
. La implementación nativa de fragmentos se agregó en el Nivel de API 11, que es inferior a losminSdkVersion
valores propuestos . La única razón por la que debería considerarFragmentActivity
específicamente es si desea usar fragmentos anidados (un fragmento que contiene otro fragmento), ya que eso no se admitió en fragmentos nativos hasta el nivel 17 de API.AppCompatActivity
Es de laappcompat-v7
biblioteca. Principalmente, esto ofrece un backport de la barra de acción. Dado que la barra de acción nativa se agregó en el API Nivel 11, no es necesarioAppCompatActivity
para eso. Sin embargo, las versiones actualesappcompat-v7
también agregan un backport limitado de la estética de Material Design, en términos de la barra de acción y varios widgets. Hay ventajas y desventajas de usarappcompat-v7
, mucho más allá del alcance de esta respuesta específica de desbordamiento de pila.ActionBarActivity
es el nombre antiguo de la actividad base deappcompat-v7
. Por varias razones, querían cambiar el nombre. A menos que algún biblioteca de terceros que está utilizando insiste en unaActionBarActivity
, se debe preferirAppCompatActivity
másActionBarActivity
.Entonces, dado su
minSdkVersion
rango de 15-16:Si desea el aspecto de diseño de material con soporte, use
AppCompatActivity
Si no, pero desea fragmentos anidados, use
FragmentActivity
Si no, use
Activity
Simplemente agregando desde el comentario como nota: se
AppCompatActivity
extiendeFragmentActivity
, por lo que cualquiera que necesite usar funciones deFragmentActivity
puede usarAppCompatActivity
.fuente
FragmentActivity
es un antepasado deAppCompatActivity
. Si bien no recomiendo usar fragmentos anidados, en la medida en que los fragmentos anidados funcionen,AppCompatActivity
admitirán fragmentos anidados.Activity
mayor parte de lo último sin, porsupport-v7
ejemplo, diseño de material no soportado? Mi objetivo es min 19 objetivo 25Theme.Material
, necesitasminSdkVersion
21 o más.Activity
es la clase base de todas las demás actividades, no creo que sea obsoleto. La relación entre ellos es:Activity
<-FragmentActivity
<-AppCompatActivity
<-ActionBarActivity
'<-' significa herencia aquí. La referencia que se dice
ActionBarActivity
está en desuso, úsela en suAppCompatActivity
lugar.Básicamente, usar
AppCompatActivity
es siempre la elección correcta. Las diferencias entre ellos son:Activity
Es el básico.Activity
,FragmentActivity
proporciona la capacidad de usoFragment
.FragmentActivity
,AppCompatActivity
proporciona características paraActionBar
.fuente
2019: uso
AppCompatActivity
En el momento de escribir esto (verifique el enlace para confirmar que todavía es cierto), la Documentación de Android recomienda usar
AppCompatActivity
si está utilizando una barra de aplicaciones.Este es el racional dado:
Las instrucciones generales para agregar una barra de herramientas son
AppCompatActivity
NoActionBar
.ToolBar
diseño xml de cada actividad.ToolBar
en cada actividadonCreate
.Consulte las instrucciones de la documentación para más detalles. Son bastante claros y útiles.
fuente
Para un nivel mínimo de API de 15, querrás usar
AppCompatActivity
. Entonces, por ejemplo,MainActivity
se vería así:Para usarlo
AppCompatActivity
, asegúrese de tener descargada la Biblioteca de soporte de Google (puede verificar esto en Herramientas -> Android -> Administrador de SDK). Luego solo incluya la dependencia de gradle en el archivo gradle.build de su aplicación:Puede usar esto
AppCompat
como su principalActivity
, que luego se puede usar para iniciar Fragmentos u otras Actividades (esto depende del tipo de aplicación que esté creando).El libro BigNerdRanch es un buen recurso, pero sí, está desactualizado. Léalo para obtener información general sobre cómo funciona Android, pero no espere que las clases específicas que usan estén actualizadas.
fuente
Activity
La clase es la clase básica. (El original) Es compatible con la gestión de fragmentos (desde API 11). Ya no se recomienda su uso puro porque sus especializaciones son mucho mejores.ActionBarActivity
fue en un momento el reemplazo de la clase Actividad porque facilitó el manejo de ActionBar en una aplicación.AppCompatActivity
es la nueva forma de hacerlo porque ya no se recomienda la ActionBar y en su lugar deberías usar Toolbar (que actualmente es el reemplazo de ActionBar). AppCompatActivity hereda de FragmentActivity, por lo que si necesita manejar Fragmentos, puede hacerlo (a través del Administrador de Fragmentos). AppCompatActivity es para CUALQUIER API, no solo para mayores de 16 años (¿quién dijo eso?). Puede usarlo agregandocompile 'com.android.support:appcompat-v7:24:2.0'
su archivo Gradle. Lo uso en API 10 y funciona perfecto.fuente
Toolbar
.Aquí hay mucha confusión, especialmente si lees fuentes obsoletas.
El básico es
Activity
, que puede mostrar Fragmentos. Puede usar esta combinación si está en la versión de Android> 4.Sin embargo, también hay una biblioteca de soporte que abarca las otras clases que usted ha mencionado:
FragmentActivity
,ActionBarActivity
yAppCompat
. Originalmente se usaban para admitir fragmentos en versiones de Android <4, pero en realidad también se usan para respaldar la funcionalidad de versiones más recientes de Android (diseño de materiales, por ejemplo).El último es
AppCompat
, los otros 2 son mayores. La estrategia que uso es usar siempreAppCompat
, para que la aplicación esté lista en caso de backports de futuras versiones de Android.fuente
Si se habla de
Activity
,AppcompactActivity
,ActionBarActivity
etc, etc ..Necesitamos hablar sobre las clases Base que están extendiendo. Primero tenemos que entender la jerarquía de las superclases.
Todas las cosas se inician desde Context, que es una superclase para todas estas clases.
Context
es seguido o extendido porContextWrapper
Ahora llegamos a
Activity
Las clases a continuación están restringidas para extenderse, pero su descendente las extiende internamente y brindan soporte para Api específicas
ahora FragmentActivty
Al usar esta clase en lugar de la compatibilidad con el cargador y los fragmentos integrados de la nueva plataforma, debe usar los métodos
getSupportFragmentManager()
ygetSupportLoaderManager()
respectivamente para acceder a esas funciones.En 2015, ActionBarActivity está en desuso en la revisión 22.1.0 de la Biblioteca de soporte. AppCompatActivity debería usarse en su lugar.
Puede agregar una barra de acción a su actividad cuando se ejecuta en el nivel de API 7 o superior extendiendo esta clase para su actividad y configurando el tema de actividad a
Theme.AppCompat
un tema similarMe refiero a estos dos uno , dos
fuente
Dado que es probable que el nombre cambie en futuras versiones de Android (actualmente la última es,
AppCompatActivity
pero probablemente cambiará en algún momento), creo que es bueno tener una claseActivity
que se extiendaAppCompatActivity
y luego todas sus actividades se extenderán desde esa. Si mañana cambian el nombre,AppCompatActivity2
por ejemplo, tendrá que cambiarlo en un solo lugar.fuente
AppCompatActivity extiende FragmentActivity extiende BaseFragmentActivityApi16 extiende BaseFragmentActivityApi14 extiende SupportActivity extiende Actividad
Entonces, Activity es más rápido que todos y AppCompatActivity es lo mejor de todo.
fuente