Impossibile trovare Theme.AppCompat.Light per il nuovo supporto ActionBar per Android


354

Sto cercando di implementare la nuova libreria di supporto ActionBar rilasciata da Google un paio di giorni fa. In passato, ho implementato con successo ActionBarSherlock senza problemi utilizzando lo stesso metodo elencato nella pagina di impostazione della libreria di supporto di Google Developer - utilizzando la guida su come includere le risorse (che è simile a come ha fatto ActionBarSherlock). Ho anche il progetto di libreria caricato nel mio progetto come libreria.

Posso dire che la libreria si sta caricando bene. Quando, invece di estendere Activity sul mio MainActivity.java, l'ho modificato per estendere ActionBarActivity (secondo le istruzioni di Google), non si verificano errori e viene importato correttamente.

Ho anche provato bypassando il file style.xml e l'aggiunta @style/Theme.AppCompat.Lightdirettamente alla AndroidManifest.xml per entrambi <application>e <activity>con android:theme="@style/ThemeAppCompat.Light"con tutti i tentativi conseguente lo stesso errore.

Ora il problema è che non riesco a cambiarlo, figuriamoci persino a costruire senza generare un errore. Di seguito è riportato l'errore che sto ricevendo, seguito dal file style.xml che ho modificato per utilizzare il nuovo tema.

Ho una moderata esperienza di lavoro con le app Android e sto eseguendo Eclipse con l'ultima versione delle librerie di supporto e la compilazione dell'SDK con API 18 (Android 4.3).

Errore ricevuto durante la compilazione

errore: errore durante il recupero del genitore per l'elemento: nessuna risorsa trovata che corrisponde al nome dato '@ style / Theme.AppCompat.Light'. styles.xml / ActBarTest / res / valori linea 3 Problema AAPT Android

style.xml

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

Eventuali suggerimenti? Questo non è mai stato un problema con ActionBarSherlock. Voglio lavorare sull'utilizzo di questa nuova libreria di supporto. Sembra quasi che il file .jar si stia caricando, ma non le risorse.


1
Prova a ripulire il progetto, forse devi ricaricare le dipendenze in modo che anche gli stili di AppCompact possano ricaricare
TheWizKid95

2
@ TheWizKid95 Ho ripulito la mia app che sto cercando di implementare e la libreria. Nessuno dei due ha comportato alcun codice modificato secondo Eclipse e non ha risolto alcun problema.
Brandon Enriquez il

Hai aggiunto una libreria di supporto con risorse? Aggiungere jar a libs non è abbastanza.
Gabriele Mariotti,

@GabrieleMariotti Sì, ho aggiunto le risorse e una libreria di progetti appositamente come indicato da Google.
Brandon Enriquez il

Ciò che ha funzionato per me è stato aggiungerlo come progetto nell'area di lavoro. Il solo importazione del jar e l'aggiunta di essi al buildpath non ha funzionato.
Johan,

Risposte:


386

Devi fare il prossimo:

  1. File->Import (android-sdk\extras\android\support\v7). Scegli "AppCompat"
  2. Project-> properties->Android. Nella sezione libreria "Aggiungi" e scegli "AppCompat"
  3. Questo è tutto!

Nota: se si utilizza "android: showAsAction" nella voce di menu, è necessario modificare il prefisso android come nell'esempio http://developer.android.com/guide/topics/ui/actionbar.html


65
Questo non funziona per me. Faccio esattamente ciò che è scritto qui, ma finisco con centinaia di Nessuna risorsa trovata che corrisponde agli errori di nome dato. Risorse che mancano sono stili inclusi da API 11 e successive, ma questa cosa dovrebbe funzionare da API 7. C'è qualche connessione che mi manca!?!
apocalypz,

5
Avendo un problema simile, il tema Theme.AppCompat.Light.NoActionBar non esiste nella mia libreria di appcompat.
JMRboosties,

9
In Importazione file non riesco a trovare "android-sdk". Vedo solo "andoird". Chiunque?
Shahar Eldad,

2
apocalypz, penso che ti manchino le risorse perché hai importato la libreria senza le risorse. ecco il link per "Aggiungere librerie con risorse" developer.android.com/tools/support-library/…
Hades200621

1
Seguendo i passaggi precedenti + aggiungi sdk \ extras \ android \ support \ v13android-support-v13.jar alla directory libs del progetto risolverà il problema.
Wasim A.

119

Se, come me, stai seguendo il tutorial Android su http://developer.android.com/training/basics/actionbar/setting-up.html e continui a ricevere questo errore, prova a cambiare lo AppBaseThemestile in tutti i styles.xmlfile. In dettaglio:

  1. Nel file res/values/styles.xmlcambia la riga:

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

    per:

    <style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">
  2. Nel file res/values-v11/styles.xmlcambia la riga:

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

    per:

    <style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">
  3. Nel file res/values-v14/styles.xmlcambia la riga:

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

    per:

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

Ora l'applicazione dovrebbe funzionare correttamente.


11
Sì, questo ha funzionato per me. La cosa fondamentale da notare è che nell'attributo parent "android:" prefissi incorporati in temi (stili) mentre un valore senza questo prefisso fa riferimento ai tuoi stili o stili in qualsiasi libreria a cui sei collegato ... come il supporto Android -v7-appcompat.
John Bentley,

Non c'è nessun res/values/styles.xmlin un nuovo progetto Android. Almeno non quando lo crei con android create project.
weberc2,

Ottieni il styles.xml quando crei il progetto con la procedura guidata, seleziona l'app a schermo intero e nascondi i controlli
JJ_Coder4Hire

8
Niente funziona per me ... 4 ore già sprecate. Ottengo ancora nessuna risorsa trovata che corrisponde al nome specificato (in "tema" con valore "@ style / Theme.AppCompat.Light"). Sto per arrendermi.
c.fogelklou,

2
Li avevo appena cambiati dall'altra parte, e in effetti era così che dovevano essere le cose nel mio progetto.
Giovanni,

28

Questo è un problema che può verificarsi in Android Studio se si modificano i moduli di struttura del progetto. In questo caso potrebbe essere necessario aggiungere nuovamente le dipendenze. In un editor di testo, modifica il file 'build.gradle' per includere le dipendenze richieste:

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

Questo dovrebbe aggiornare il tuo file '{your_project_name} .iml' con componenti lib:

<orderEntry type="library" exported="" name="appcompat-v7-19.0.1" level="project" />

1
Ricorda che ci sono file 2 * .iml. Quello con le voci della libreria è contenuto nella sottocartella del progetto e ha un nome file minuscolo.
David Douglas,

2
Questo ha risolto il mio problema. l'aggiunta dell'appcompat alle dipendenze nel build.gradle interno ha funzionato. Mi dispiace dire che ho modificato manualmente per abbinare un altro progetto che ha rotto le cose!
JJ_Coder4Hire

28

Condividerò la mia esperienza con questo problema. Stavo impazzendo per questo, ma ho scoperto che il problema era un bug con Eclipse stesso, piuttosto che il mio codice: In eclissi, incapace di fare riferimento a un progetto di libreria Android in un altro progetto Android

Quindi, se hai la Libreria di supporto Android nella tua unità C: e il tuo progetto nell'unità D: sul tuo computer, Eclipse non funzionerà correttamente e non saprà dove si trova la Libreria di supporto Android (il segno di spunta verde si trasforma in croce rossa ). Per risolvere questo problema, è necessario spostare entrambi i progetti sullo stesso disco rigido.


4
Grazie. Quello era il caso della mia situazione. Al passaggio 1 (File-> Importa (android-sdk \ extras \ android \ support \ v7). Scegli "appcompat"), devi selezionare "copia nello spazio di lavoro".
Hong

Ho affrontato un problema simile. Grazie mille, è stato davvero complicato
SILINIK

Stesso problema in AndroidStudio. Ho appena trascorso 3 ore a cercare di capirlo. Grazie!
Ruben Martinez Jr.

Jup. Posso confermare questo ... IntellJ ha esattamente lo stesso problema, almeno con AppCompat ... ha sprecato 4 ore su questo problema.
puelo,

Questa è stata la soluzione anche per me. Copiando il progetto appcompat_v7 sulla stessa unità del progetto di destinazione e aggiungendolo come lib lo ha fatto funzionare senza problemi.
MayaPosch

23

Ho fatto quanto segue in Eclipse con il progetto Android Support Library ( APL ) e il progetto principale ( MP ):

  1. Garantito che sia APL che MP avevano lo stesso minSdkVersione targetSdkVersion.

  2. Aggiunto APL come dipendenza build per MP :

    1. Andare in "Proprietà> Percorso build Java" di MP , quindi

    2. Selezionando la scheda "Progetti" e aggiungendo APL .

  3. Nelle proprietà di MP , in "Android", è stato aggiunto un riferimento ad APL nella libreria.

1 e 2 hanno fatto in modo che i riferimenti alle classi Java funzionassero bene ... tuttavia ho visto ancora l'errore in manifest.xmlfor MP quando provavo a fare riferimento @style/Theme.AppCompat.Lightda APL . Questo è andato via solo quando ho eseguito il passaggio 3.


9
Usa sicuramente "@ style / Theme.AppCompat ..." anziché "@android: style / Theme.AppCompat ...". Questo plus # 3 di questa risposta ha risolto il mio problema.
BeccaP

Il punto 2 sembra essere errato. Porta a un messaggio di registro degli errori di compilazione come descritto e risolto qui: stackoverflow.com/questions/18421274/…
OneWorld

18

È un po 'tardi ma ecco come lo faccio in AndroidStudio!

Fare clic con il tasto destro sull'app per accedere alle proprietà Fare clic con il tasto destro sull'app per accedere alle proprietà

Vai a Dipendenze e fai clic sul segno "+" e scegli la dipendenza dalla libreria Vai a Dipendenze e fai clic sul segno "+" e scegli la dipendenza dalla libreria Scegli appcompat-v7 Scegli appcompat-v7


12

Soluzione IDEA IntelliJ.

1. Eseguire Android SDK Manager e installare l' ultimo SDK e Android Support Libarary . La versione di SDK e Android Support Libarary dovrebbe essere la stessa ! 23 nel mio caso. Altre varianti ti daranno gli errori. 2. Cambia la versione dell'SDK del tuo progetto IDEA con l'ultima installata nel passaggio precedente. (ps. non puoi usare Maven).
inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

3. Aggiungi un nuovo modulo da una fonte esistente al tuo progetto IDEA.
inserisci qui la descrizione dell'immagine

4. Aggiungi il progetto AppCompat. !!! Dovrebbe essere incluso anche nell'ultimo SDK! (ps. Di '"Sì" ovunque nel processo di questo passaggio)
inserisci qui la descrizione dell'immagine

5. Apri le impostazioni del tuo Modulo di progetto principale e aggiungi 3 successive dipendenze:

5.1. Dipendenza del modulo. Scegli android-support-v7-appcompat
inserisci qui la descrizione dell'immagine

5.2. 2 pz. Dipendenze della biblioteca. Aggiungi android-sdk \ extra \ android \ support \ v7 \ appcompat \ libs \ android-support-v4.jar e android-support-v4 \ android-support-v7-appcompat.jar
inserisci qui la descrizione dell'immagine

In totale sarà:
inserisci qui la descrizione dell'immagine

6. Molto importante !!!
Aggiungi tema con prefisso @style (non un altro!) .
inserisci qui la descrizione dell'immagine



Soluzione Android Studio.

1. Eseguire Android SDK Manager e installare l' ultimo SDK e Android Support Libarary . La versione di SDK e Android Support Libarary dovrebbe essere la stessa ! 23 nel mio caso. Altre varianti ti daranno gli errori.
inserisci qui la descrizione dell'immagine

2. Aggiungi accanto a build.gradle

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

PS Se sei nuovo nello sviluppo di Android, ti consiglio vivamente di passare a Android Studio & Gradle in questo momento - otterrai il modo più semplice di gestire la tua app Android.


La migliore risposta che abbia mai trovato in SO su Android
Alex Jolig,

10

Per Android Studio 1.2.2

Rilascia "android" dal parentvalore dell'attributo:

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

7

hai bisogno di riferimento $ ANDROID_SDK / extra / android / support / v7 / appcompat


Ti dispiace andare a maggiori dettagli su come fare esattamente riferimento? Ho già fatto riferimento a quella cartella esatta come indicato nelle istruzioni per gli sviluppatori Android. Seguito le indicazioni esattamente come indicato sul loro sito Web. Posso dire che viene referenziato almeno parzialmente perché ActionBarActivity viene esteso senza errori.
Brandon Enriquez il

3
riferimento appcompatcome Libreria Android, la tua principale risorsa di progetto può essere trovata a tema da appcompat
Crossle Song il

Questo ha funzionato. In precedenza lo facevo all'interno del Java Build Path.
Brandon Enriquez il

5

Per IntelliJ IDEA o Android Studio:

Aggiungi questo al file di build app.gradle

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

Sostituisci -v:xx.0+, con il tuo obiettivo di costruzione, se hai una piattaforma 19, deve essere come:

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

3

Segui i passaggi di @rcdmk. Elimina il supporto Android v4.jar nel TUO progetto. È in conflitto con la nuova versione aggiornata trovata in appcompat.


3

Ho avuto lo stesso problema e ho perso 4-5 ore per la soluzione. Il mio problema è stato risolto;

  1. Dal gestore SDK elimina i pacchetti "Libreria di supporto Android" e "Repository di supporto Android".
  2. Reinstallare "Libreria di supporto Android" e "Repository di supporto Android"
  3. Rimuovi "android-support-v7-appcompat" o "appcompat_v7 cos'altro hai nel tuo progetto.
  4. Importa android-support-v7-appcompat da "adt-bundle-windows-x86_64-20140702 \ sdk \ extras \ android \ support \ v7 \ appcompat"
  5. Seleziona il tuo progetto e dal file scegli le proprietà e trova Java Build Path e poi dalla scheda "Project" elimina cos'altro lì e poi Aggiungi. e devi vedere "android-support-v7-appcompat", selezionalo e aggiungilo alla scheda Progetto.
  6. Controlla il tuo file project.properties sotto i tuoi file Project, vedrai così; target = android-21 android.library.reference.1 = .. / android-support-v7-appcompat quindi controlla il file AndroidManifest.xml se target è 21 o cos'altro hai scelto. Controlla anche come riferimento alla libreria uguale alla tua libreria scelta in precedenza.

Spero che troverai la tua soluzione.


1
Ciò che mi ha aiutato è stato aggiornare la mia libreria di supporto Android utilizzando SDK Manager, eliminare la vecchia libreria di appcompat dallo spazio di lavoro, reimportare la libreria di appcompat appena aggiornata (e copiarla nello spazio di lavoro) e quindi creare.
Varun,

3

Il mio problema si risolve tramite i seguenti passaggi

  1. File-> Importa (android-sdk \ extras \ android \ support \ v7 \ appcompat)
  2. Fare clic con il tasto destro su Progetto-> proprietà-> Android. Nella sezione libreria "Aggiungi" e scegli la libreria appcompat inclusa nel passaggio 1
  3. Elimina tutti i file dalla directory libs del progetto
  4. aggiungi il seguente file alla directory libs del progetto <SDK-PATH>\extras\android\support\v13android-support-v13.jar

    Riavvia Eclipse se necessario. Questo è tutto. Il tuo problema dovrebbe essere scomparso.


felice di aiutare qualcuno :)
Wasim A.

2

lavori:

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

2

Poiché il dialouge di importazione è diverso in Android Studio 1.0.1, non sono riuscito a far funzionare la versione di Svyatoslav Lobachs.

Invece ho scaricato "Repository di supporto Android" in SDK Manager. Quindi aggiunto

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

a build.gradle. Ha funzionato per me.



1

Ho riscontrato lo stesso problema dell'OP dopo aver fatto clic con il pulsante destro del mouse sul mio progetto e aver selezionato Chiudi progetti non correlati .

Nel mio caso, ho risolto il problema riaprendo il progetto appcompat_v7 e pulendo / ricostruendo entrambi i progetti.


1

Mi è successo quando Eclipse (Luna) / AndroidSDK (non Android Stduio) sono stati utilizzati con gli strumenti e la libreria più recenti a partire dal 14 gennaio 2015 durante il progetto come HelloWorld. Quando ho installato questi strumenti e ho reso HelloWorld la prima app, ho accettato tutte le impostazioni predefinite. - Questo è il problema nel mio caso.

Innanzitutto, verifica se è installata o meno la libreria "Libreria di supporto Android". In caso contrario, installarlo. Non è installato per impostazione predefinita. Puoi fare tutto in "Gestione SDK Android" disponibile nel menu.

(Gestione SDK Android -> Extra -> Libreria di supporto Android)

Benedizioni, (un debitore) <> <


1

Soluzione più veloce:

tasto destro del mouse sul progetto -> Strumenti Android -> Aggiungi libreria di supporto.

inserisci qui la descrizione dell'immagine


0

Ho fatto un errore davvero sciocco per questo. Quando stavo ottenendo lo stesso errore ogni volta non riuscivo a capire cosa non andava. poi mi ha fatto clic sul fatto che una volta ho chiuso tutti i progetti nel mio spazio di lavoro e quello era il momento da quando sono iniziati tutti i problemi. Quindi controlla se "appcompat_v7" non è chiuso. In questo caso, apri il progetto facendo doppio clic, quindi pulisci e compila nuovamente il progetto. Nel mio caso gli errori erano spariti. Buona programmazione!


0

Non sono sicuro se la libreria di supporto v13 fosse disponibile quando questa domanda è stata pubblicata, ma nel caso qualcuno stia ancora lottando, ho visto che l'aggiunta android-support-v13.jarrisolverà tutto. Ecco come l'ho fatto:

  1. Fare clic con il tasto destro sul progetto -> Proprietà
  2. Selezionare Java Build Path dalla tabella dei contenuti sul lato sinistro
  3. Vai alla scheda Librerie
  4. Aggiungi il pulsante Vasetti esterni e seleziona <your sdk path>\extras\android\support\v13\android-support-v13.jar

0

Per Android Studio o IntelliJ, tutto ciò che devi fare è aggiornare le tue dipendenze in gradle.build. Ho usato il seguente:

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

0

Non so quanti di voi abbiano notato questo. Supporta la libreria "appcompat_v7" e il tuo progetto dovrebbe trovarsi in una stessa directory (intendo la directory dello spazio di lavoro). Non pulire il tuo progetto fino a quando non sarà privo di errori altrimenti avrai difficoltà con R.java


0

Faresti meglio a creare un nuovo progetto con qualsiasi nome, quindi utilizzare appcompat_v7 che il programma crea nuovo.

Right Click Project-> properties->Android

Nella sezione libreria Adde scegli libreria appcompat.


0

in eclissi fai clic con il tasto destro sul tuo progetto-> seleziona il percorso di costruzione e quindi seleziona configura percorso di costruzione. dalla finestra selezionare il file jar desiderato e aggiornare il progetto


0

La soluzione accettata funzionava per me una volta, ma non ora. Ho dovuto ricreare un ciao-mondo dello stesso tipo (!) In un nuovo spazio di lavoro, farlo compilare e quindi copiare tutte le directory, incluso .hge .hgignore. hg diffSpettacoli:

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

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

Sembra che Eclipse voglia compilare per API 21 e non riesca a fare nulla con API 19. Darkly.


0

Se hai aggiunto la libreria appCompat e hai fornito anche il riferimento corretto di appCompat dalla posizione dell'SDK, prova a "invalidare le cache / Riavvia" .
Puoi trovarlo dal menu "File" in Android Studio.


0

Nel mio caso il problema si è verificato poiché volevo usare un SDK che non include la libreria richiesta. Quando ho aumentato il min. Livello SDK il problema è scomparso. Naturalmente, includendo direttamente anche la libreria stessa, è necessario rimuovere anche l'errore.


0

Dimentica tutto. Basta usare la libreria appcompat scaricata utilizzando Android Studio. Ha tutte le definizioni mancanti. Non importa se stai usando Eclipse o no.


0

Ho avuto lo stesso problema e anche dopo aver importato / aggiunto un barattolo / libreria come indicato nelle risposte non avrebbe risolto l'errore. Per frustrazione, ho appena creato un nuovo spazio di lavoro e creato un nuovo progetto Android e ha importato automaticamente appcompat_v7 e non ci sono stati errori su clean and build. Non è stato necessario importare manualmente un singolo jar / libreria. FYI Sto usando eclipse Mars.1 Release (4.5.1) e ho dovuto affrontare lo stesso identico problema ogni volta che ho creato un nuovo progetto Android.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.