Vengo de iOS, donde es fácil y usted sólo tiene que utilizar un UIViewController. Sin embargo, en Android las cosas parecen mucho más complicado, con ciertas UIComponents específicas de la API de Niveles. Estoy leyendo BigNerdRanch para Android (el libro es de aproximadamente 2 años de edad) y sugieren que uso Activity para alojar mi FragmentActivities. Sin embargo, pensé Activity era obsoleto.

Así que para la API de Nivel 22 (con un mínimo de soporte para la API de Nivel 15 o 16 años), lo que exactamente debo usar tanto para alojar los componentes, y para los mismos componentes? Hay usos para todos los de estos, o debería estar usando uno o dos casi exclusivamente?

  • Usted no será hosting FragmentActivityerótico. Sólo host Fragments. En las nuevas versiones de Android para el Activity clase en sí ha sido actualizado para dar cabida a ellos directamente. Para apoyar a las versiones anteriores FragmentActivity fue introducido.
  • Del mismo modo, con el API 11+ Activityerótico tuvo el apoyo de un ActionBar. Esto fue apoyado en las versiones anteriores a través de ActionBarActivity primera, que ahora ha quedado obsoleta y se reemplaza con AppCompatActivity. Dado que, tanto de estas clases se extienden FragmentActivity que el apoyo de hosting Fragments así.
InformationsquelleAutor Jameson | 2015-07-08

9 Comentarios

  1. 297

    Pensé que la Actividad era obsoleto

    No.

    Así que para la API de Nivel 22 (con un mínimo de soporte para la API de Nivel 15 o 16 años), lo que exactamente debo usar tanto para alojar los componentes, y para los mismos componentes? Hay usos para todos los de estos, o debería estar usando uno o dos casi exclusivamente?

    Activity es la línea de base. Cada actividad se hereda de Activity, directa o indirectamente.

    FragmentActivity es para el uso con la migración de los fragmentos encontrados en el support-v4 y support-v13 bibliotecas. El nativo de la aplicación de los fragmentos fue añadido en la API de Nivel 11, que es inferior a su propuesta minSdkVersion valores. La única razón por la que usted necesita para considerar FragmentActivity en concreto es si desea utilizar anidada de los fragmentos (un fragmento de la celebración de otro fragmento), como que no se apoyó en los fragmentos hasta el Nivel de la API 17.

    AppCompatActivity es de la appcompat-v7 de la biblioteca. Principalmente, este ofrece una migración de la barra de acción. Ya que la nativa de la barra de acción se agregó en el Nivel de la API 11, no necesita AppCompatActivity para que. Sin embargo, las versiones actuales de appcompat-v7 también agregar un limitado backport del Material de la estética de Diseño, en términos de la barra de acción y varios widgets. Hay pros y los contras del uso de appcompat-v7, mucho más allá del alcance de este Desbordamiento de la Pila de respuesta.

    ActionBarActivity es el antiguo nombre de la base de la actividad de appcompat-v7. Por diversas razones, querían cambiar el nombre. A menos que una librería de terceros que usted está usando insiste en una ActionBarActivity, se debe preferir AppCompatActivity más de ActionBarActivity.

    Por tanto, dada su minSdkVersion en la 15-16 rango:

    • Si quieres el backport Material de Diseño de la apariencia, el uso de AppCompatActivity

    • Si no, pero desea anidada fragmentos, uso FragmentActivity

    • Si no, utilice Activity

    Sólo la adición de comentarios nota: AppCompatActivity se extiende FragmentActivity, por lo que cualquier persona que necesite utilizar las características de FragmentActivity puede utilizar AppCompatActivity.

    • Lo que si quiero utilizar Material de Diseño de la mirada y también quiere anidada fragmentos? ¿AppCompatActivity hereda de FragmentActivity?
    • Sí, FragmentActivity es un ancestro de AppCompatActivity. Mientras no se recomienda utilizar anidada fragmentos, en la medida en que anidaba fragmentos de la obra, AppCompatActivity apoyará anidada fragmentos.
    • Gracias por la respuesta detallada @CommonsWare. Se podría decir que minSDK permitiría utilizar Activity recibiendo la mayor parte de la última sin support-v7 yo.e no se incluya el Diseño de Materiales. Mi objetivo es min 19 de destino 25
    • El uso de Theme.Material, usted necesita minSdkVersion de 21 años o mayor.
  2. 66

    Activity es la clase base de todas las demás actividades, no creo que va a ser obsoleto. La relación entre ellos es:

    Activity <- FragmentActivity <- AppCompatActivity <- ActionBarActivity

    ‘<-‘ significa que la herencia de aquí. El referencia dijo ActionBarActivity está en desuso, uso AppCompatActivity lugar.

    Así que, básicamente, el uso de AppCompatActivity es siempre la elección correcta. Las diferencias entre ellos:

    • Activity es la básica.
    • Basado en Activity, FragmentActivity proporciona la capacidad de utilizar Fragment.
    • Basado en FragmentActivity, AppCompatActivity proporciona características para ActionBar.
    • elegante respuesta.
  3. 63

    2018: Uso AppCompatActivity

    En el momento de escribir este artículo (consulta el enlace para confirmar que es cierto), la Android Documentación recomienda el uso de AppCompatActivity si usted está utilizando una Barra de la Aplicación.

    Esta es la racional dado:

    Principio con Android 3.0 (API de nivel 11), todas las actividades que se utilice
    el tema por defecto tienen una ActionBar como una barra de la aplicación. Sin embargo, la barra de la aplicación
    características han sido agregados gradualmente a los nativos ActionBar más
    varias versiones de Android. Como resultado, el nativo de la ActionBar se comporta
    de manera diferente dependiendo de qué versión del sistema Android a un dispositivo
    puede estar usando. Por el contrario, las características más recientes se añaden a la
    la biblioteca de soporte de la versión de la Barra de herramientas, y están disponibles en cualquier
    dispositivo que puede utilizar la biblioteca de compatibilidad.

    Por esta razón, usted debe utilizar la biblioteca de soporte de la Barra de herramientas de la clase a
    implementar actividades de las barras de la aplicación. Mediante el apoyo de la biblioteca
    barra de herramientas de ayuda a garantizar que su aplicación va a tener un comportamiento coherente
    a través de la más amplia gama de dispositivos. Por ejemplo, el widget de la Barra de herramientas
    proporciona un material de diseño de la experiencia en dispositivos que ejecutan Android 2.1
    (Nivel de API 7) o más tarde, pero el nativo de la barra de acción no apoyo
    diseño de materiales, a menos que el dispositivo se está ejecutando Android 5.0 (nivel de API
    21) o más tarde.

    Las instrucciones generales para la adición de una Barra de herramientas son

    1. Agregar la v7 appcompat de la biblioteca de soporte
    2. Hacer todas sus actividades se extienden AppCompatActivity
    3. En el Manifiesto declara que desea NoActionBar.
    4. Agregar un ToolBar para cada actividad del xml de diseño.
    5. Obtener la ToolBar en cada actividad onCreate.

    Ver el documentación de las direcciones para obtener más detalles. Son bastante claras y útiles.

    • Hola @Suragch, gracias por esto. Decir que me estoy haciendo una aplicación hoy en día que SÓLO admite 21 en adelante. De hecho, como sucede que no quiero hacer, alguna vez, una acción de la barra o de la barra de la aplicación (más de una pantalla completa de la aplicación). Estudio sugiere (16 de noviembre) yo podría usar «compatibilidad con versiones anteriores (AppCompat)». Mi instinto es NO utilizar AppCompat. ¿Cuál es su opinión de los expertos? Sólo puedo agradecer a usted, gracias.
    • Yo no soy un experto así que no te puedo dar una opinión experta, pero sugiere la documentación de apoyo como tantos dispositivos como sea posible, de modo que es lo que yo hago. Yo uso AppCompat con todas mis aplicaciones y ha funcionado bien hasta ahora. Supongo que si usted realmente no quiere apoyar los 21, a continuación, puede omitir el Estudio de la sugerencia.
  4. 48

    Por un mínimo nivel de API de 15, te gustaría utilizar AppCompatActivity. Así, por ejemplo, su MainActivity tendría este aspecto:

    public class MainActivity extends AppCompatActivity {
        ....
        ....
    }

    El uso de la AppCompatActivity, asegúrese de que tiene el equipo de asistencia de Google de la Biblioteca descargado (se puede comprobar en sus Herramientas -> Android -> SDK manager). A continuación, sólo tienes que incluir el gradle de dependencia en su aplicación gradle.construir archivo:

    compile 'com.android.support:appcompat-v7:22:2.0'

    Puede utilizar este AppCompat como su principal Activity, que luego pueden ser utilizados para el lanzamiento de Fragmentos o de otras Actividades (esto depende de qué tipo de aplicación que se está construyendo).

    La BigNerdRanch libro es un buen recurso, pero sí, es anticuado. Leer para obtener información general sobre el funcionamiento de Android, pero no esperes que las clases específicas que utilizan para estar al día.

    • OK, yo tengo esa dependencia en mi gradle.archivo de construcción. Así, por ejemplo, si yo estoy haciendo una tabla con un montón de filas (como cualquier aplicación de Notas), mi pantalla principal va a ser un AppCompat y también otra cosa que aloja también será un AppCompat? Hacer yo, básicamente, sólo tiene que utilizar AppCompat?
    • Por lo que su AppCompat se inflan diseño de algunos de los recursos que especifica el diseño (mesa con un montón de filas). Pero digamos que usted desea abrir una nueva página al hacer clic en una fila. Se puede establecer un onClickListener para abrir una nueva AppCompat Actividad o un Fragmento.
    • Como de 3 de Agosto, BigNerdRanch tiene una nueva edición de su libro: amazon.com/Android-Programming-Nerd-Ranch-Guide/dp/0134171454/…
    • compañero donde se ha mencionado que por 15 o por encima de usted puede utilizar AppCompatActivity – pensé v7 en android.apoyo.v7.la aplicación es para un mínimo de sdk requiere es 7.
    • android.apoyo.v7 puede ser utilizado comenzó en la API de nivel 9. Fuente: developer.android.com/topic/libraries/support-library/…
    • gracias.
    • Donde has leído/encontrar esta información? Es genial tener desbordamiento de la pila para hacer preguntas, pero yo nunca tengo idea de donde la documentación es en esto!

  5. 28

    Activity clase es la clase básica. (El original) Es compatible Fragmento de gestión (Desde la API 11). No es recomendable ya que su uso puro debido a su especialización son mucho mejores.

    ActionBarActivity fue en un momento el la sustitución de la Actividad de la clase, ya que es fácil de manejar el ActionBar en una aplicación.

    AppCompatActivity es el nuevo camino a seguir, porque la ActionBar no se animó a más y se debe utilizar en lugar de la Barra de herramientas (que actualmente el ActionBar de reemplazo). AppCompatActivity hereda de FragmentActivity así que si usted necesita para manejar Fragmentos puede (a través del Fragmento de Administrador). AppCompatActivity es para CUALQUIER API, no sólo de 16+ (¿quién dijo eso?). Se puede usar mediante la adición de compile 'com.android.support:appcompat-v7:24:2.0' en su Gradle archivo. Yo lo uso en la API de 10 y funciona perfecto.

    • «el ActionBar ahora es obsoleto», la barra de acción no es obsoleto. «usted necesita para utilizar la Barra de herramientas» — aplicaciones, no es necesario utilizar Toolbar.
    • Ok, no es obsoleto, pero su uso no se recomienda en su forma más pura (el viejo). Ahora, si usted quiere tener una Barra de Acción en la aplicación debe agregar manualmente mediante una Barra de herramientas .
    • «su uso no es recomendado en su forma más pura» — no he visto nada en la documentación oficial o entradas de blog que pudiera justificar su reclamación. ¿Tienes un enlace?
    • Ustedes son la eminencia aquí y usted está en lo correcto. Sólo el diseño de Materiales directrices sugieren el uso de una Barra de herramientas una Barra de Acción. Tal vez debería eliminar mi respuesta ya no es precisa. Gracias
    • Empezando con el Apoyo de la Biblioteca de la versión 26.0.0 (lanzado en julio de 2017), el mínimo compatible a nivel de API ha cambiado a Android 4.0 (nivel de API 14) por todo el apoyo de la biblioteca de paquetes. fuente: developer.android.com/topic/libraries/support-library/…
  6. 11

    Hay una gran cantidad de confusión aquí, especialmente si usted lee anticuado fuentes.

    El básico es Activity, que puede mostrar Fragmentos. Usted puede utilizar esta combinación, si usted está en la versión de Android > 4.

    Sin embargo, también hay una biblioteca de compatibilidad que engloba a las otras clases que usted ha mencionado: FragmentActivity, ActionBarActivity y AppCompat. Originalmente fueron utilizados para apoyar los fragmentos en versiones de Android < 4, pero en realidad también se utilizan para backport la funcionalidad de las versiones más recientes de Android (diseño de materiales, por ejemplo).

    La última es AppCompat, los otros 2 son mayores de edad. La estrategia que yo uso es la de usar siempre AppCompat, por lo que la aplicación va a estar listo en caso de backports de las futuras versiones de Android.

    • Gracias! OK, entonces puedo usar AppCompat en el lugar de la Actividad con el fin de organizar… ¿qué? En orden a otro host AppCompats? O en el fin de organizar FragmentActivities?
    • Una actividad que normalmente sólo host de otros fragmentos… Y no te preocupes acerca de FragmentActivity, se trata más de una «base» de la clase, que todos los demás de lujo XXXActivity derivan de.
    • Pero que clase debe mi AppCompat host? Otro AppCompat, o algo más?
    • Sólo tengo una cosa que entender aquí: actividades de acogida de los fragmentos. Las actividades no están hospedados por cualquier otra cosa por el camino, ellos no pueden estar anidados. Appcompat es sólo otro tipo de actividad. Después de que usted puede seguir y nido de fragmentos, pero que comienza a ser complejo de administrar.
    • OK genial. Muchas gracias. Creo que ahora entiendo. Voy a usar AppCompat como mi «Actividad» y de acogida FragmentActivities. A la derecha?
    • No, el uso de appcompat como una actividad y el host fragmentos, no fragmentactivities.

  7. 5

    Si hablamos de Activity, AppcompactActivity, ActionBarActivity etc etc..

    Tenemos que hablar de clases Base que se están extendiendo, Primero tenemos que entender la jerarquía de las super clases.

    Todas las cosas que se inician a partir de un Contexto que es super clase para todas estas clases.

    Contexto es una clase abstracta cuya aplicación es proporcionada por el
    Sistema Android. Permite el acceso a la aplicación específica de los recursos y
    las clases, así como también las llamadas para su aplicación a nivel de operaciones como
    el lanzamiento de las actividades, la difusión y la recepción de las calidades, etc

    Context es seguido por o extendido por ContextWrapper

    La ContextWrapper es una clase que extienda Contexto clase que simplemente
    los delegados de todas sus llamadas a otro Contexto. Puede ser una subclase para
    modificar el comportamiento sin cambiar el Contexto original.

    Ahora llegamos a Activity

    La Actividad es una clase que extiende ContextThemeWrapper que es un
    único, centrado cosa que el usuario puede hacer. Casi todas las actividades
    interactuar con el usuario, de manera que la Actividad de la clase se ocupa de la creación de un
    ventana para usted

    Por debajo de las Clases se limita a extender, pero que se extendió por su descendiente internamente y de proporcionar soporte para la Api específica

    La SupportActivity es una clase que extiende de la Actividad que es una clase Base para componer juntos compatibilidad con la funcionalidad de

    La BaseFragmentActivityApi14 es una clase que extiende SupportActivity
    que es una clase Base es restringido clase, sino que se extienden por
    BaseFragmentActivityApi16 para mantener la funcionalidad de V14

    La
    BaseFragmentActivityApi16 es una clase que extiende
    BaseFragmentActivityApi14 que es una clase Base para {@code
    FragmentActivity} para ser capaz de utilizar v16 Api. Pero también es
    clase restringida, pero se extienden por FragmentActivity para apoyar la
    la funcionalidad de la V16.

    ahora FragmentActivty

    La FragmentActivity es una clase que extiende
    BaseFragmentActivityApi16 y que quiere utilizar el soporte basado en
    Fragmento y Api del Cargador.

    Cuando el uso de esta clase frente a la nueva plataforma integrada en el fragmento y cargador de apoyo, debe utilizar el getSupportFragmentManager() y getSupportLoaderManager() métodos, respectivamente, del acceso a dichas características.

    ActionBarActivity es parte de la Biblioteca de Compatibilidad. Apoyar a las bibliotecas son utilizados para entregar las nuevas funciones en las plataformas anteriores. Para
    ejemplo el ActionBar se introdujo en la API de 11 y es parte de la
    Actividad por defecto (dependiendo del tema, en realidad). En contraste
    no hay ActionBar en las plataformas anteriores. Por eso, el apoyo
    biblioteca agrega un niño de la clase de Actividad (ActionBarActivity) que
    proporciona la ActionBar del la funcionalidad y la interfaz de usuario

    En 2015 ActionBarActivity está en desuso en la revisión 22.1.0 de la Biblioteca de Compatibilidad. AppCompatActivity debe utilizarse en su lugar.

    La AppcompactActivity es una clase que extiende
    FragmentActivity que es la clase Base para las actividades que utilizan el apoyo de la biblioteca de la acción de la barra de funciones.

    Puede agregar un ActionBar a su actividad cuando se ejecuta en la API de nivel 7 o superior al extender esta clase para su actividad y establecer el tema de la actividad a Theme.AppCompat o un tema similar

    La actividad, AppCompatActivity, FragmentActivity, y ActionBarActivity: Cuándo Utilizar?

    Me refiero a estos dos uno,dos

  8. 3

    Ya que el nombre se puede cambiar en futuras versiones de Android (actualmente la última es AppCompatActivity pero es probable que cambie en algún momento), creo que una buena cosa a tener es una clase Activity que se extiende AppCompatActivity y, a continuación, todas sus actividades se extienden a partir de que uno. Si el día de mañana, se cambio el nombre a AppCompatActivity2 por ejemplo, tendrás que cambiarlo en un solo lugar.

  9. 0

    AppCompatActivity se extiende FragmentActivity se extiende BaseFragmentActivityApi16 se extiende BaseFragmentActivityApi14 se extiende SupportActivity se extiende Actividad

    Así Actividad es más rápido que todos los & AppCompatActivity es el mejor de todos.

Dejar respuesta

Please enter your comment!
Please enter your name here