studio rojo resolved importa getsupportactionbar cannot actionbaractivity android appcompat android-appcompat android-actionbaractivity appcompatactivity

rojo - getsupportactionbar android studio



¿Cuál es la mejora de AppCompatActivity sobre ActionBarActivity? (6)

android.support.v7.app.AppCompatActivity se agregó ayer a la última biblioteca de soporte v7 como una nueva característica.

Se dice que ActionBarActivity ha quedado en desuso a favor de la nueva AppCompatActivity y que AppCompatActivity es la clase base para actividades que utilizan las funciones de la barra de acciones de la biblioteca de soporte. Entonces, ¿cuáles son las nuevas características de AppCompatActivity sobre ActionBarActivity ? ¿Qué mejoras tiene AppCompatActivity sobre ActionBarActivity ? ¿Y cuáles son las ventajas de AppCompatActivity ? ¿Podría alguien suministrar algunas muestras?

Cualquier consejo es apreciado. Y gracias de antemano.

PD: lo que más me sorprendió es que AppCompatActivity que se extiende desde android.support.v4.app.FragmentActivity es la clase principal directa de ActionBarActivity . Quiero decir, en realidad ahora que ActionBarActivity puede hacer cualquier cosa que AppCompatActivity pueda hacer, ¿por qué Android AppCompatActivity lo último?

Mientras tanto, vi una publicación de blog que dice: " No es un cambio de nombre de ActionBarActivity a AppCompatActivity , la lógica interna de AppCompat está disponible a través de AppCompatDelegate ", entonces, ¿cuál es la " lógica interna " de AppCompat ? ¿Qué puede hacer AppCompatDelegate ? ¿Alguien podría publicar algunos códigos sobre esto?


La biblioteca de soporte de AppCompat comenzó con principios humildes pero importantes: una única barra de acción consistente para todos los dispositivos API 7 y superiores. En la revisión 21, asumió una nueva responsabilidad : llevar paleta de colores de materiales, tintado de widgets, soporte de barra de herramientas y más a todos los dispositivos API 7+. Con eso, el nombre ActionBarActivity realmente no cubrió el alcance completo de lo que realmente hizo .

http://android-developers.blogspot.it/2015/04/android-support-library-221.html


Anteriormente, el único punto de entrada a AppCompat era a través de la clase ActionBarActivity ahora en desuso. Desafortunadamente, esto te obligó a usar una jerarquía de actividad establecida que hizo que cosas como usar PreferenceActivity imposibles.

Para más información, consulte las bibliotecas de support-libraries-v22-1-0 Chris Banes support-libraries-v22-1-0


Como escribió Chris, la nueva versión obsoleta de ActionBarActivity (la que extiende la clase AppCompatActivity ) es una clase de compatibilidad con versiones anteriores segura para usar. Su desaprobación es solo una pista para que solicite utilizar directamente la nueva AppCompatActivity . AppCompatActivity es una implementación nueva y más genérica que utiliza la clase AppCompatDelegate internamente.

Si comienza un nuevo desarrollo, debería usar la nueva clase AppCompatActivity inmediato. Si tiene la oportunidad de actualizar su aplicación, reemplace también ActionBarActivity desuso por la nueva actividad. De lo contrario, puede permanecer con actividades obsoletas y no habrá ninguna diferencia en el comportamiento.

Con respecto a AppCompatDelegate , le permite tener nuevos widgets tintados en una actividad, que no es AppCompatActivity ni ActionBarActivity .

Por ejemplo, hereda una actividad de una biblioteca externa, que, a su vez, no hereda de AppCompatActivity pero desea que esta actividad tenga widgets (vistas) de materiales tintados. Para que esto suceda, debe crear una instancia de AppCompatDelegate dentro de su actividad, anular métodos de esa actividad como addContentView() , setContentView() etc. (consulte AppCompatDelegate javadoc para obtener la lista completa de métodos), y dentro de esos métodos anulados las llamadas a la instancia interna de AppCompatDelegate . AppCompatDelegate hará el resto y su actividad "antigua" se "materializará".


Es principalmente un cambio de nombre: ActionBarActivity realmente no describe todo lo que hace ahora. Puede utilizar de forma segura ActionBarActivity si lo desea. Piense en ello como un enlace simbólico.


La última versión de la biblioteca de soporte de Android, 22.1, desprecia la ActionBarActivity a favor de AppCompatActivity , que promete traer una única ActionBar consistente para todos los dispositivos que comiencen con API Nivel 7 y superior


AppCompatActivity se introdujo en Android-SDK desde el lanzamiento de la biblioteca de compatibilidad de aplicaciones de Android .

AppCompatActivity es la clase secundaria directa de FragmentActivity de soporte v4 y la clase primaria directa de ActionBarActivity .

AppCompatActivity es la clase base para actividades que utilizan las funciones de la barra de acciones de la biblioteca de soporte .

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

En cuanto a la biblioteca de compatibilidad de aplicaciones v7, agrega compatibilidad con el patrón de diseño de la interfaz de usuario de la Barra de acciones . Esta biblioteca incluye soporte para implementaciones de interfaz de usuario de diseño de materiales .

Estas son algunas de las clases clave incluidas en la biblioteca v7 appcompat:

  • ActionBar : proporciona una implementación del patrón de interfaz de usuario de la barra de acción.
  • AppCompatActivity : agrega una clase de actividad de aplicación que se puede usar como clase base para actividades que usan la implementación de la barra de acción de la Biblioteca de soporte .
  • AppCompatDialog : agrega una clase de diálogo que se puede usar como clase base para los diálogos temáticos de AppCompat .
  • ShareActionProvider : agrega soporte para una acción de compartir estandarizada (como correo electrónico o publicación en aplicaciones sociales) que se puede incluir en una barra de acción.

Después de descargar las Bibliotecas de soporte de Android , esta biblioteca se encuentra en el directorio / extras / android / support / v7 / appcompat / .