No se puede encontrar Theme.AppCompat.Light para el nuevo Android ActionBar Support

354

Estoy intentando implementar la nueva biblioteca de soporte de ActionBar que Google lanzó hace un par de días. En el pasado, he implementado con éxito ActionBarSherlock sin ningún problema utilizando el mismo método que aparece en la página de configuración de la biblioteca de soporte de Google Developer, utilizando la guía sobre cómo incluir los recursos (que es similar a cómo lo hizo ActionBarSherlock). Tengo el proyecto de la biblioteca cargado en mi propio proyecto como biblioteca también.

Puedo decir que la biblioteca se está cargando bien. Cuando, en lugar de extender Activity en mi MainActivity.java, lo cambié para extender ActionBarActivity (según las instrucciones de Google), no se producen errores, y se importa correctamente.

Incluso he intentado pasar por el archivo style.xml y añadiendo @style/Theme.AppCompat.Lightdirectamente en el AndroidManifest.xml para ambos <application>y <activity>con android:theme="@style/ThemeAppCompat.Light"todos los intentos que resultan en el mismo error.

Ahora el problema es que no puedo hacer que cambie el tema, y ​​mucho menos incluso construir sin lanzar un error. A continuación se muestra el error que recibo, seguido del archivo style.xml que cambié para usar el nuevo tema.

Tengo una experiencia moderada trabajando con aplicaciones de Android y estoy ejecutando Eclipse con la última versión de las bibliotecas de soporte y SDK compilando con API 18 (Android 4.3).

Error recibido durante la compilación

error: Error al recuperar el elemento primario para el elemento: no se encontró ningún recurso que coincida con el nombre dado '@ style / Theme.AppCompat.Light'. styles.xml / ActBarTest / res / values ​​line 3 Android AAPT Problema

style.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="Theme.ProsoftStudio.ACTest" parent="@style/Theme.AppCompat.Light">
    </style>
</resources>

¿Alguna sugerencia? Esto nunca fue un problema con ActionBarSherlock. Quiero trabajar en el uso de esta nueva biblioteca de soporte. Casi parece que el .jar se está cargando, pero no los recursos.

Brandon Enriquez
fuente
1
Intente limpiar el proyecto, tal vez necesite volver a cargar las dependencias para que los estilos de AppCompact también puedan recargarse
TheWizKid95
2
@ TheWizKid95 Hice una limpieza en mi aplicación que estoy tratando de implementar y la biblioteca. Ninguno de los dos resultó en ningún código modificado de acuerdo con Eclipse y no solucionó ninguno de los problemas.
Brandon Enríquez
¿Has agregado biblioteca de soporte con recursos? Agregar jar a libs no es suficiente.
Gabriele Mariotti
@GabrieleMariotti Sí, agregué los recursos y una biblioteca de proyectos, especialmente según las instrucciones de Google.
Brandon Enríquez
Lo que funcionó para mí fue agregarlo como un proyecto al espacio de trabajo. Solo importar el jar y agregarlos a buildpath no funcionó.
Johan

Respuestas:

386

Tienes que hacer lo siguiente:

  1. File->Import (android-sdk\extras\android\support\v7). Elija "AppCompat"
  2. Project-> properties->Android. En la sección biblioteca "Agregar" y elija "AppCompat"
  3. ¡Eso es todo!

Nota: si está usando "android: showAsAction" en el elemento del menú, debe cambiar el prefijo android como en el ejemplo http://developer.android.com/guide/topics/ui/actionbar.html

Svyatoslav Lobach
fuente
65
Esto no funciona para mi. Hago exactamente lo que está escrito aquí, pero termino con cientos de No se encontraron recursos que coincidan con los errores de nombre. Los recursos, que faltan, son estilos que se incluyen desde API 11 y superior, pero esto debería funcionar desde API 7. ¿Hay alguna conexión que me falta?
apocalypz
55
Al tener un problema similar, el tema Theme.AppCompat.Light.NoActionBar no existe en mi biblioteca appcompat.
JMRboosties
99
En File-Import no puedo encontrar 'android-sdk'. Solo veo 'extraño'. ¿Nadie?
shahar eldad
2
apocalypz, creo que te faltan los recursos porque has importado la biblioteca sin los recursos. aquí está el enlace para "Agregar bibliotecas con recursos" developer.android.com/tools/support-library/…
Hades200621
1
Siguiendo los pasos anteriores + agregar sdk \ extras \ android \ support \ v13android-support-v13.jar al directorio libs del proyecto resolverá el problema.
Wasim A.
119

Si, como yo, está siguiendo el tutorial de Android en http://developer.android.com/training/basics/actionbar/setting-up.html y sigue recibiendo este error, intente cambiar el AppBaseThemeestilo en todos los styles.xmlarchivos. En detalle:

  1. En el archivo res/values/styles.xmlcambia la línea:

    <style name="AppBaseTheme" parent="android:Theme.Light">

    a:

    <style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">
  2. En el archivo res/values-v11/styles.xmlcambia la línea:

    <style name="AppBaseTheme" parent="android:Theme.Holo.Light">

    a:

    <style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">
  3. En el archivo res/values-v14/styles.xmlcambia la línea:

    <style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">

    a:

    <style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">

Ahora la aplicación debería funcionar bien.

marco110
fuente
11
Sí, esto funcionó para mí. Lo importante es que en el atributo principal "android:" prefijos integrados en temas (estilos), mientras que un valor sin este prefijo hace referencia a sus propios estilos o estilos en cualquier biblioteca a la que se haya vinculado ... como el soporte de Android -v7-appcompat.
John Bentley
No hay res/values/styles.xmlen un nuevo proyecto de Android. Al menos no cuando lo creas con android create project.
weberc2
Obtiene styles.xml cuando crea el proyecto con el asistente, seleccione la aplicación de pantalla completa y oculte los controles
JJ_Coder4Hire
8
Nada funciona para mí ... 4 horas ya desperdiciadas. Todavía no encuentro ningún recurso que coincida con el nombre (en 'theme' con el valor '@ style / Theme.AppCompat.Light'). A punto de rendirse.
c.fogelklou
2
Simplemente los había cambiado a la inversa, y de hecho así era como tenían que ser las cosas en mi proyecto.
John
28

Este es un problema que puede ocurrir en Android Studio si modifica los módulos de estructura del proyecto. En este caso, es posible que deba agregar las dependencias nuevamente. En un editor de texto, edite el archivo 'build.gradle' para incluir las dependencias requeridas:

dependencies {
    compile 'com.android.support:appcompat-v7:+'
    compile fileTree(dir: 'libs', include: ['*.jar'])
}

Esto debería actualizar su archivo '{your_project_name} .iml' con componentes lib:

<orderEntry type="library" exported="" name="appcompat-v7-19.0.1" level="project" />
David Douglas
fuente
1
Tenga en cuenta que hay archivos 2 * .iml. El que tiene las entradas de la biblioteca está contenido en la subcarpeta del proyecto y tiene un nombre de archivo en minúscula.
David Douglas
2
Esto solucionó mi problema. Agregar el appcompat a las dependencias en el build.gradle interno funcionó. Lamento decir que edité manualmente para que coincida con otro proyecto que rompió las cosas.
JJ_Coder4Hire
28

Compartiré mi experiencia con este problema. Me estaba volviendo loco por esto, pero descubrí que el problema era un error con Eclipse, en lugar de mi código: en eclipse, no puedo hacer referencia a un proyecto de biblioteca de Android en otro proyecto de Android

Entonces, si tiene la Biblioteca de soporte de Android en su unidad C: y su proyecto en la unidad D: en su computadora, Eclipse no funcionará correctamente y no sabrá dónde está la Biblioteca de soporte de Android (la marca verde se convierte en cruz roja ) Para resolver esto, debe mover ambos proyectos al mismo disco duro.

DrFred
fuente
44
Gracias. Ese fue el caso de mi situación. En el paso 1 (Archivo-> Importar (android-sdk \ extras \ android \ support \ v7). Elija "appcompat"), debe marcar "copiar al espacio de trabajo".
Hong
Me enfrenté a un problema similar. Muchas gracias, fue realmente complicado
SILINIK
Mismo problema en AndroidStudio. Solo pasé como 3 horas tratando de resolver esto. ¡Gracias!
Ruben Martinez Jr.
Jup Puedo confirmar esto ... IntellJ tiene exactamente el mismo problema, al menos con AppCompat ... desperdició 4 horas en este problema.
puelo
Esta fue la solución para mí también. Copiar el proyecto appcompat_v7 en la misma unidad que el proyecto de destino y agregarlo como lib lo hizo funcionar sin problemas.
MayaPosch
23

Hice lo siguiente en Eclipse con el proyecto de Biblioteca de soporte de Android ( APL ) y el Proyecto principal ( MP ):

  1. Aseguró que tanto APL como MP tuvieran lo mismo minSdkVersiony targetSdkVersion.

  2. Se agregó APL como dependencia de compilación para MP :

    1. Entrando en "Propiedades> Ruta de compilación Java" de MP , y luego

    2. Seleccionando la pestaña "Proyectos" y agregando APL .

  3. En las propiedades de MP , en "Android", se agregó una referencia a APL en la biblioteca.

1 y 2 tiene las referencias a las clases de Java que trabajan muy bien ... sin embargo todavía veía el error en la manifest.xmlde MP cuando se trata de referencia @style/Theme.AppCompat.Lightde APL . Esto solo desapareció cuando realicé el paso 3.

yogui
fuente
99
Definitivamente use "@ style / Theme.AppCompat ..." en lugar de "@android: style / Theme.AppCompat ...". Este plus # 3 de esta respuesta resolvió mi problema.
BeccaP
El punto 2 parece ser incorrecto. Conduce a un mensaje de registro de error de compilación como se describe y soluciona aquí: stackoverflow.com/questions/18421274/…
OneWorld
18

¡Es un poco tarde, pero así es como lo hago en AndroidStudio!

Haga clic derecho en la aplicación para ir a las propiedades Haga clic derecho en la aplicación para ir a las propiedades

Vaya a Dependencias y haga clic en el signo '+' y elija la dependencia de la biblioteca Vaya a Dependencias y haga clic en el signo '+' y elija la dependencia de la biblioteca Elija appcompat-v7 Elija appcompat-v7

usuario6327816
fuente
12

Solución IntelliJ IDEA.

1. Ejecute Android SDK Manager e instale el último SDK y Android Support Libarary . ¡La versión de SDK y Android Support Libarary debería ser la misma ! 23 en mi caso. Otras variantes te darán los errores. 2. Cambie la versión SDK de su proyecto IDEA a la última que instaló en el paso anterior. (ps. no puedes usar Maven).
ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

3. Agregue un nuevo Módulo de un recurso existente a su proyecto IDEA.
ingrese la descripción de la imagen aquí

4. Agregue el proyecto AppCompat. !!! ¡También debería estar bajo el último SDK! (ps. Di "Sí" en cualquier parte del proceso de este paso)
ingrese la descripción de la imagen aquí

5. Abra la configuración de su módulo de proyecto principal y agréguele las siguientes 3 dependencias:

5.1. Dependencia del módulo. Elija android-support-v7-appcompat
ingrese la descripción de la imagen aquí

5.2. 2 piezas Dependencias de la biblioteca. Agregue android-sdk \ extras \ android \ support \ v7 \ appcompat \ libs \ android-support-v4.jar y android-support-v4 \ android-support-v7-appcompat.jar
ingrese la descripción de la imagen aquí

En total será:
ingrese la descripción de la imagen aquí

6. Muy importante !!!
Agregue el tema con el prefijo @style (¡no otro!) .
ingrese la descripción de la imagen aquí



Solución de Android Studio.

1. Ejecute Android SDK Manager e instale el último SDK y Android Support Libarary . ¡La versión de SDK y Android Support Libarary debería ser la misma ! 23 en mi caso. Otras variantes te darán los errores.
ingrese la descripción de la imagen aquí

2. Agregar al lado de build.gradle

dependencies {
    compile 'com.android.support:appcompat-v7:23.0.1'
} 

PD: si eres nuevo en el desarrollo de Android, te recomiendo que te cambies a Android Studio & Gradle en este momento: obtendrás la forma más sencilla de administrar tu aplicación de Android.

Yuliia Ashomok
fuente
La mejor respuesta que he encontrado en SO sobre Android
Alex Jolig
10

Para Android Studio 1.2.2

Suelta "android" del parentvalor del atributo:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"></style>
momia
fuente
7

necesita referencia $ ANDROID_SDK / extras / android / support / v7 / appcompat

Canción Crossle
fuente
¿Te importaría entrar en más detalles sobre cómo hacer referencia exactamente? Ya he hecho referencia a esa carpeta exacta como se indica en las instrucciones para desarrolladores de Android. Seguí las instrucciones exactamente como se indica en su sitio web. Puedo decir que se hace referencia al menos parcialmente porque ActionBarActivity se está extendiendo sin errores.
Brandon Enriquez
3
referencia appcompatcomo Biblioteca de Android, su recurso principal del proyecto puede encontrar el tema de appcompat
Crossle Song
Eso hizo el truco. Anteriormente lo estaba haciendo dentro de Java Build Path.
Brandon Enríquez
5

Para IntelliJ IDEA o Android Studio:

Agregue esto al archivo de compilación app.gradle

dependencies {
    compile "com.android.support:appcompat-v7:21.0.+"
} 

Reemplace -v:xx.0+, con su objetivo de construcción, si tiene 19 plataformas, entonces debe ser como:

dependencies {
    compile "com.android.support:appcompat-v7:19.0.+"
}
geniushkg
fuente
3

Sigue los pasos de @rcdmk. Elimine el soporte de Android v4.jar en SU ​​proyecto. Entra en conflicto con la nueva versión actualizada que se encuentra en appcompat.

back2back
fuente
3

Tuve el mismo problema y perdí mis 4-5 horas para la solución. Mi problema resuelto con;

  1. Desde el administrador del SDK, elimine los paquetes "Biblioteca de soporte de Android" y "Repositorio de soporte de Android".
  2. Vuelva a instalar "Biblioteca de soporte de Android" y "Repositorio de soporte de Android"
  3. Elimine "android-support-v7-appcompat" o "appcompat_v7 qué más tiene en su proyecto.
  4. Importe android-support-v7-appcompat desde "adt-bundle-windows-x86_64-20140702 \ sdk \ extras \ android \ support \ v7 \ appcompat"
  5. Seleccione su proyecto y desde el archivo elija propiedades y busque Java Build Path y luego desde la pestaña "Proyecto" elimine qué más hay y luego Agregar. y debe ver "android-support-v7-appcompat", selecciónelo y agréguelo a la pestaña Proyecto.
  6. Verifique su archivo project.properties debajo de sus archivos Project, verá esto; target = android-21 android.library.reference.1 = .. / android-support-v7-appcompat luego verifique el archivo AndroidManifest.xml si target es 21 o qué más eligió. También verifique la referencia de la biblioteca igual que su biblioteca que eligió antes.

Espero que encuentres tu solución.

syildizeli
fuente
1
Lo que me ayudó fue actualizar mi biblioteca de soporte de Android usando el administrador de SDK, eliminar la antigua biblioteca appcompat del espacio de trabajo, volver a importar la biblioteca appcompat recientemente actualizada (y copiarla en el espacio de trabajo) y luego compilar.
Varun
3

Mi problema se resuelve a través de los siguientes pasos

  1. Archivo-> Importar (android-sdk \ extras \ android \ support \ v7 \ appcompat)
  2. Haga clic derecho en Proyecto-> propiedades-> Android. En la sección biblioteca "Agregar" y elija la biblioteca appcompat que se incluye en el paso 1
  3. Eliminar todos los archivos del directorio libs del proyecto
  4. agregue el siguiente archivo al directorio libs del proyecto <SDK-PATH>\extras\android\support\v13android-support-v13.jar

    Reinicie Eclipse si es necesario. Eso es. Su problema debería desaparecer.

Wasim A.
fuente
Me alegro de que ayude a alguien :)
Wasim A.
2

trabajos:

<style name="MyApp" parent="Theme.AppCompat.Light">
</style>
<style name="MyApp" parent="@style/Theme.AppCompat.Light">
</style>
<style name="Theme.AppCompat.Light.MyApp">
</style>
Yin
fuente
2

Dado que Importar dialouge es diferente en Android Studio 1.0.1, no pude hacer que la versión de Svyatoslav Lobachs funcione.

En su lugar, descargué "Android Support Repository" en el SDK Manager. Luego agregado

dependencies {
...
compile "com.android.support:appcompat-v7:18.0.+"
}

a build.gradle. Trabajó para mi.

qwertz
fuente
1

Experimenté el mismo problema que el OP después de hacer clic derecho en mi proyecto y seleccionar Cerrar proyectos no relacionados .

En mi caso, resolví el problema volviendo a abrir el proyecto appcompat_v7 y limpiando / reconstruyendo ambos proyectos.

prohibición de geoingeniería
fuente
1

Me sucedió cuando Eclipse (Luna) / AndroidSDK (no Android Stduio) se usaron con las últimas herramientas y biblioteca a partir del 14 de enero de 2015 durante el proyecto como HelloWorld. Cuando instalé esas herramientas e hice de HelloWorld la primera aplicación, acepté todos los valores predeterminados. - Este es el problema en mi caso.

Primero, verifique si la biblioteca "Biblioteca de soporte de Android" está instalada o no. Si no, instálelo. No está instalado por defecto. Puede hacerlo todo en el "Administrador de SDK de Android" disponible en el menú.

(Android SDK Manager -> Extra -> Biblioteca de soporte de Android)

Bendiciones, (un deudor) <> <

Youngsup Kim
fuente
1

La solución más rápida:

haga clic derecho en el proyecto -> Herramientas de Android -> Agregar biblioteca de soporte ..

ingrese la descripción de la imagen aquí

Jesus Dimrix
fuente
0

Cometí un error muy tonto por esto. Cuando recibía el mismo error cada vez que no podía descubrir qué estaba mal. luego me di cuenta de que una vez que había cerrado todos los proyectos en mi espacio de trabajo y ese era el momento desde que comenzaron todos los problemas. Así que simplemente verifique si su "appcompat_v7" no está cerrado. Si es así, abra el proyecto haciendo doble clic y luego limpie y vuelva a construir su proyecto. En mi caso, los errores desaparecieron. ¡Feliz codificación!

Riddhi Dudani
fuente
0

No estoy seguro de si la biblioteca de soporte v13 estaba disponible cuando se publicó esta pregunta, pero en caso de que alguien todavía tenga dificultades, he visto que agregar android-support-v13.jarsolucionará todo. Así es como lo hice:

  1. Haga clic derecho en el proyecto -> Propiedades
  2. Seleccione Java Build Path de la tabla de contenido del lado izquierdo
  3. Ir a la pestaña Bibliotecas
  4. Agregar botón de jarras externas y seleccionar <your sdk path>\extras\android\support\v13\android-support-v13.jar
sdevikar
fuente
0

Para Android Studio o IntelliJ, todo lo que necesita hacer es actualizar sus dependencias en gradle.build. Usé lo siguiente:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.2'
}
BostonGeorge
fuente
0

No sé cuántos de ustedes notaron esto. Apoye la biblioteca "appcompat_v7" y su proyecto debe estar en el mismo directorio (me refiero al directorio del espacio de trabajo). No limpie su proyecto hasta que esté libre de errores, de lo contrario, tendrá dificultades con R.java

Isham
fuente
0

Será mejor que haga un nuevo proyecto con cualquier nombre, luego use appcompat_v7 que el programa hace nuevo.

Right Click Project-> properties->Android

En la sección biblioteca Addy elija la biblioteca appcompat.

Rebaja
fuente
0

en eclipse, haga clic derecho en su proyecto-> seleccione la ruta de compilación y luego seleccione configurar ruta de compilación. desde la ventana, seleccione el archivo jar que desee y actualice su proyecto

Rahul
fuente
0

La solución aceptada solía funcionar para mí una vez, pero no ahora. Tuve que volver a crear un hola-mundo del mismo tipo (!) En un nuevo espacio de trabajo, lo compilé y luego copié todos los directorios, incluidos .hgy .hgignore. hg diffmuestra:

-        android:targetSdkVersion="19" />
+        android:targetSdkVersion="21" />

Binary file libs/android-support-v4.jar has changed

Parece que Eclipse quiere compilar para API 21 y no puede hacer nada con API 19. Darkly.

18446744073709551615
fuente
0

Si ha agregado la biblioteca appCompat y también ha proporcionado la referencia adecuada de appCompat desde la ubicación del SDK, intente "invalidar cachés / reiniciar" .
Puede encontrarlo en el menú "Archivo" en Android Studio.

Suraj Dubey
fuente
0

En mi caso, el problema ocurrió porque quería usar un SDK que no incluye la biblioteca requerida. Cuando aumenté el min. SDK nivel el problema desapareció. Por supuesto, incluir directamente la propia biblioteca, también debería eliminar el error.

Barbaros Erdogdu
fuente
0

Olvidalo todo. Simplemente use la biblioteca appcompat descargada con Android Studio. Tiene todas las definiciones que faltan. No importa si está utilizando Eclipse o no.

Rohit Rokde
fuente
0

Tuve el mismo problema e incluso después de importar / agregar un jar / biblioteca como se menciona en las respuestas, no resolvió el error. Por frustración, acabo de crear un nuevo espacio de trabajo y un nuevo proyecto de Android e importó automáticamente appcompat_v7 y no hubo errores en la limpieza y la compilación. No tuve que importar un solo jar / biblioteca manualmente. Solo para su información, estoy usando la versión eclipse Mars.1 (4.5.1) y me enfrentaba exactamente al mismo problema cada vez que creaba un nuevo proyecto de Android.

API
fuente