Nie można znaleźć Theme.AppCompat.Light dla nowej obsługi ActionBar dla Androida


354

Próbuję wdrożyć nową bibliotekę obsługi ActionBar, która została wydana przez Google kilka dni temu. W przeszłości z powodzeniem zaimplementowałem ActionBarSherlock bez żadnych problemów, korzystając z tej samej metody wymienionej na stronie konfiguracji biblioteki pomocy Google Developer's Support - korzystając z przewodnika na temat dołączania zasobów (podobnie jak w przypadku ActionBarSherlock). Mam również projekt biblioteki załadowany do mojego projektu jako biblioteki.

Mogę powiedzieć, że biblioteka ładuje się dobrze. Kiedy zamiast rozszerzać działanie na moim MainActivity.java, zmieniłem go, aby rozszerzyć ActionBarActivity (zgodnie z instrukcjami Google), nie występują błędy - i importuje się poprawnie.

Próbowałem nawet pomijając plik style.xml i dodając @style/Theme.AppCompat.Lightbezpośrednio do AndroidManifest.xml zarówno dla <application>i <activity>ze android:theme="@style/ThemeAppCompat.Light"wszystkich prób prowadzących do tego samego błędu.

Teraz problem polega na tym, że nie mogę zmusić go do zmiany motywu, a co dopiero budować bez zgłaszania błędu. Poniżej pojawia się błąd, a następnie plik style.xml, który zmieniłem, aby użyć nowego motywu.

Mam umiarkowane doświadczenie w pracy z aplikacjami na Androida i korzystam z Eclipse z najnowszą wersją bibliotek wsparcia i zestawu SDK kompilującego z API 18 (Android 4.3).

Wystąpił błąd podczas kompilacji

error: Błąd podczas pobierania elementu nadrzędnego dla elementu: Nie znaleziono zasobu, który pasuje do podanej nazwy „@ style / Theme.AppCompat.Light”. styles.xml / ActBarTest / res / values ​​line 3 Problem z Androidem AAPT

style.xml

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

Jakieś sugestie? To nigdy nie było problemem z ActionBarSherlock. Chcę popracować nad użyciem tej nowej biblioteki wsparcia. Wygląda na to, że ładuje się plik .jar, ale nie zasoby.


1
Spróbuj wyczyścić projekt, być może trzeba przeładować zależności, aby style z AppCompact mogły się również przeładować
TheWizKid95

2
@ TheWizKid95 Zrobiłem czyszczenie mojej aplikacji, którą próbuję wdrożyć i biblioteki. Żaden z nich nie spowodował zmiany kodu zgodnie z Eclipse i nie naprawił żadnego z problemów.
Brandon Enriquez

Czy dodałeś bibliotekę wsparcia z zasobami? Dodaj słoik do bibliotek to za mało.
Gabriele Mariotti

@GrrieleMariotti Tak. Dodałem zasoby oraz bibliotekę projektów specjalnie według instrukcji Google.
Brandon Enriquez,

Dla mnie zadziałało dodanie go jako projektu do obszaru roboczego. Po prostu zaimportowanie słoika i dodanie go do ścieżki kompilacji nie działało.
Johan

Odpowiedzi:


386

Musisz zrobić dalej:

  1. File->Import (android-sdk\extras\android\support\v7). Wybierz „AppCompat”
  2. Project-> properties->Android. W bibliotece sekcji „Dodaj” i wybierz „AppCompat”
  3. To wszystko!

Uwaga: jeśli używasz „android: showAsAction” w elemencie menu, musisz zmienić prefiks android jak w przykładzie http://developer.android.com/guide/topics/ui/actionbar.html


65
To mi nie działa. Robię dokładnie to, co tu napisano, ale w końcu nie ma setki Nie znaleziono zasobów, które pasują do podanych błędów nazw. Zasoby, których brakuje, to style zawarte w API 11 i nowszych, ale ta rzecz powinna działać z API 7. Czy brakuje jakiegoś połączenia!?!
apocalypz

5
Mając podobny problem, motyw Theme.AppCompat.Light.NoActionBar nie istnieje w mojej bibliotece appcompat.
JMRboosties

9
W obszarze Import plików nie mogę znaleźć „android-sdk”. Widzę tylko „andoird”. Ktoś?
shahar eldad

2
apocalypz, myślę, że brakuje ci zasobów, ponieważ zaimportowałeś bibliotekę bez zasobów. tutaj jest link do „Dodawanie bibliotek z zasobami” developer.android.com/tools/support-library/…
Hades200621

1
Postępując zgodnie z powyższymi krokami + dodaj sdk \ extras \ android \ support \ v13android-support-v13.jar do katalogu libs projektu, aby rozwiązać problem.
Wasim A.,

119

Jeśli, podobnie jak ja, postępujesz zgodnie z samouczkiem Androida na http://developer.android.com/training/basics/actionbar/setting-up.html i nadal pojawia się ten błąd, spróbuj zmienić AppBaseThemestyl we wszystkich styles.xmlplikach. Szczegółowo:

  1. W pliku res/values/styles.xmlzmień wiersz:

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

    do:

    <style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">
  2. W pliku res/values-v11/styles.xmlzmień wiersz:

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

    do:

    <style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">
  3. W pliku res/values-v14/styles.xmlzmień wiersz:

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

    do:

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

Teraz aplikacja powinna działać poprawnie.


11
Tak, to zadziałało dla mnie. Kluczową rzeczą, na którą należy zwrócić uwagę, jest to, że w nadrzędnym atrybucie „android:” prefiksy wbudowane w kompozycje (style), podczas gdy wartość bez tego prefiksu odwołuje się do twoich własnych stylów lub stylów w dowolnych bibliotekach, z którymi masz połączenie ... takich jak obsługa Androida -v7-appcompat.
John Bentley,

Nie ma res/values/styles.xmlnowego projektu na Androida. Przynajmniej nie, kiedy go tworzysz android create project.
weberc2,

Otrzymasz styles.xml, gdy tworzysz projekt za pomocą kreatora, wybierz aplikację pełnoekranową i ukryj kontrolki
JJ_Coder4Hire 16.04.2014

8
Nic mi nie działa ... 4 godziny już zmarnowane. Nadal otrzymuję Nie znaleziono zasobu, który pasuje do podanej nazwy (w „theme” o wartości „@ style / Theme.AppCompat.Light”). Właśnie się poddaję.
c.fogelklou

2
Właśnie zmieniłem je w drugą stronę i tak właśnie było w moim projekcie.
Jan

28

Jest to problem, który może się zdarzyć w Android Studio, jeśli zmodyfikujesz moduły struktury projektu. W takim przypadku może być konieczne ponowne dodanie zależności. W edytorze tekstu edytuj plik „build.gradle”, aby uwzględnić wymagane zależności:

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

Powinno to zaktualizować plik „{twoja_projekt_nazwa} .iml” o składniki lib:

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

1
Pamiętaj, że są 2 pliki * .iml. Ten z wpisami biblioteki znajduje się w podfolderze projektu i ma małą nazwę pliku.
David Douglas

2
To naprawiło mój problem. dodanie appcompat do zależności w wewnętrznej wersji build.gradle działało. Z przykrością stwierdzam, że edytowałem ręcznie, aby dopasować inny projekt, który zepsuł się!
JJ_Coder4 Zatrudnij

28

Podzielę się swoim doświadczeniem z tym problemem. Z tego powodu zwariowałem, ale dowiedziałem się, że problemem był błąd związany z samym Eclipse, a nie z moim kodem: w Eclipse nie mogę odwołać się do projektu biblioteki Androida w innym projekcie Androida

Tak więc, jeśli masz bibliotekę wsparcia Androida na dysku C: i swój projekt na dysku D: na swoim komputerze, Eclipse nie będzie działał poprawnie i nie będzie wiedział, gdzie jest biblioteka wsparcia Androida (zielony znaczek zmienia się w czerwony krzyżyk ). Aby rozwiązać ten problem, musisz przenieść oba projekty na ten sam dysk twardy.


4
Dziękuję Ci. Tak było w mojej sytuacji. W kroku 1 (Plik-> Importuj (android-sdk \ extras \ android \ support \ v7). Wybierz „appcompat”), musisz zaznaczyć „skopiuj do obszaru roboczego”.
Hong

Miałem podobny problem.
Wielkie

Ten sam problem w AndroidStudio. Właśnie spędziłem 3 godziny próbując to rozgryźć. Dzięki!
Ruben Martinez Jr.

Jup. Potwierdzam to ... IntellJ ma dokładnie ten sam problem, przynajmniej z AppCompat ... zmarnował 4 godziny na ten problem.
puelo

To było również rozwiązanie dla mnie. Skopiowanie projektu appcompat_v7 na ten sam dysk co projekt docelowy i dodanie go jako lib sprawiło, że działał bez problemów.
MayaPosch

23

Wykonałem następujące czynności w Eclipse z projektem Biblioteki wsparcia Android ( APL ) i Projektem głównym ( MP ):

  1. Zapewniłem, że zarówno APL, jak i MP mieli to samo minSdkVersioni targetSdkVersion.

  2. Dodano APL jako zależność kompilacji dla MP :

    1. Przejdź do „Właściwości> Ścieżka kompilacji Java” MP , a następnie

    2. Wybierz zakładkę „Projekty” i dodaj APL .

  3. We właściwościach MP , w „Android”, dodano odwołanie do APL w bibliotece.

1 i 2 otrzymały referencje do klas Java działających poprawnie ... jednak nadal widziałem błąd w MPmanifest.xml dla próby odniesienia się z APL . Zniknęło to dopiero, gdy wykonałem krok 3.@style/Theme.AppCompat.Light


9
Zdecydowanie użyj „@ style / Theme.AppCompat ...” zamiast „@android: style / Theme.AppCompat ...”. Ten plus 3 z tej odpowiedzi rozwiązał mój problem.
BeccaP,

Punkt 2 wydaje się niepoprawny. Prowadzi to do komunikatu dziennika błędów kompilacji, jak opisano i naprawiono tutaj: stackoverflow.com/questions/18421274/…
OneWorld,

18

Jest trochę późno, ale oto jak to zrobić w AndroidStudio!

Kliknij aplikację prawym przyciskiem myszy, aby przejść do właściwości goto Kliknij aplikację prawym przyciskiem myszy, aby przejść do właściwości goto

Przejdź do Zależności i kliknij znak „+” i wybierz zależność od biblioteki Przejdź do Zależności i kliknij znak „+” i wybierz zależność biblioteki Wybierz appcompat-v7 Wybierz appcompat-v7


12

Rozwiązanie IntelliJ IDEA.

1. Uruchom Menedżera zestawu SDK systemu Android i zainstaluj najnowszą wersję zestawu SDK i biblioteki obsługi systemu Android . Wersja SDK i Libarary Obsługi Androida powinna być taka sama ! 23 w moim przypadku. Inne warianty podają błędy. 2. Zmień wersję SDK projektu IDEA na ostatnią zainstalowaną w poprzednim kroku. (ps. nie możesz używać Maven).
wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

3. Dodaj nowy moduł z istniejącego źródła do projektu IDEA.
wprowadź opis zdjęcia tutaj

4. Dodaj projekt AppCompat. !!! Powinny być również w ramach ostatniego zestawu SDK! (ps. Powiedz „Tak” w dowolnym miejscu na tym etapie)
wprowadź opis zdjęcia tutaj

5. Otwórz ustawienia głównego modułu projektu i dodaj do niego kolejne 3 zależności:

5.1 Zależność modułu. Wybierz android-support-v7-appcompat
wprowadź opis zdjęcia tutaj

5.2 2 szt. Zależności bibliotek. Dodaj android-sdk \ extras \ android \ support \ v7 \ appcompat \ libs \ android-support-v4.jar i android-support-v4 \ android-support-v7-appcompat.jar
wprowadź opis zdjęcia tutaj

W sumie będzie to:
wprowadź opis zdjęcia tutaj

6. Bardzo ważne !!!
Dodaj motyw z prefiksem @style (nie innym!) .
wprowadź opis zdjęcia tutaj



Rozwiązanie Android Studio.

1. Uruchom Menedżera zestawu SDK systemu Android i zainstaluj najnowszą wersję zestawu SDK i biblioteki obsługi systemu Android . Wersja SDK i Libarary Obsługi Androida powinna być taka sama ! 23 w moim przypadku. Inne warianty podają błędy.
wprowadź opis zdjęcia tutaj

2. Dodaj obok build.gradle

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

PS Jeśli dopiero zaczynasz przygodę z programowaniem na Androida, zdecydowanie zalecamy przejście na Android Studio i Gradle - uzyskasz najprostszy sposób zarządzania aplikacją na Androida.


Najlepsza odpowiedź, jaką kiedykolwiek znalazłem w SO na temat Androida
Alex Jolig

10

Dla Androida Studio 1.2.2

Usuń „android” z parentwartości atrybutu:

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

7

potrzebujesz referencji $ ANDROID_SDK / extras / android / support / v7 / appcompat


Macie coś bardziej szczegółowego w tym, jak dokładnie się do niego odwoływać? Odwołałem się już do tego dokładnego folderu, jak podano w instrukcjach dla programistów Androida. Postępował zgodnie z instrukcjami dokładnie tak, jak podano na ich stronie internetowej. Mogę powiedzieć, że odwołuje się to przynajmniej częściowo, ponieważ ActionBarActivity jest rozszerzany bez błędów.
Brandon Enriquez,

3
odniesienie appcompatjako Biblioteka Androida, głównym zasobem projektu można znaleźć motyw z appcompat
Crossle Song

To załatwiło sprawę. Wcześniej robiłem to w ramach ścieżki kompilacji Java.
Brandon Enriquez,

5

W przypadku IntelliJ IDEA lub Android Studio:

Dodaj to do pliku kompilacji app.gradle

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

Zamień na -v:xx.0+swój cel kompilacji, jeśli masz 19 platform, musi to być:

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

3

Postępuj zgodnie z instrukcjami @rcdmk. Usuń obsługę Androida v4.jar ze swojego projektu. Jest w konflikcie z nową zaktualizowaną wersją znalezioną w appcompat.


3

Miałem ten sam problem i marnowałem 4-5 godzin na rozwiązanie. Mój problem rozwiązany;

  1. Z menedżera SDK usuń pakiety „Biblioteka wsparcia Androida” i „Repozytorium wsparcia Androida”.
  2. Ponownie zainstaluj „Android Support Library” i „Android Support Repository”
  3. Usuń „android-support-v7-appcompat” lub „appcompat_v7, co jeszcze masz w swoim projekcie.
  4. Importuj android-support-v7-appcompat z „adt-bundle-windows-x86_64-201401402 \ sdk \ extras \ android \ support \ v7 \ appcompat”
  5. Wybierz projekt i z pliku wybierz właściwości i znajdź Ścieżkę kompilacji Java, a następnie na karcie „Projekt” usuń to, co jeszcze, a następnie Dodaj. i musisz zobaczyć „android-support-v7-appcompat”, wybierz i dodaj go do zakładki Projekt.
  6. Sprawdź plik project.properties poniżej plików projektu, zobaczysz tak; target = android-21 android.library.reference.1 = .. / android-support-v7-appcompat, a następnie sprawdź plik AndroidManifest.xml, jeśli celem jest 21 lub co jeszcze wybrałeś. Sprawdź także odwołania do biblioteki takie same, jak wcześniej wybrana biblioteka.

Mam nadzieję, że znajdziesz swoje rozwiązanie.


1
Pomógł mi zaktualizować moją bibliotekę pomocy Android za pomocą menedżera SDK, usunąć starą bibliotekę appcompat z obszaru roboczego, ponownie zaimportować nowo zaktualizowaną bibliotekę appcompat (i skopiować do przestrzeni roboczej), a następnie skompilować.
Varun

3

Mój problem rozwiązano, wykonując następujące kroki

  1. Plik-> Importuj (android-sdk \ extras \ android \ support \ v7 \ appcompat)
  2. Kliknij prawym przyciskiem myszy Projekt-> właściwości-> Android. W bibliotece sekcji „Dodaj” i wybierz bibliotekę appcompat zawartą w kroku 1
  3. Usuń wszystkie pliki z katalogu libs projektu
  4. dodaj następujący plik do katalogu libs projektu <SDK-PATH>\extras\android\support\v13android-support-v13.jar

    W razie potrzeby uruchom ponownie Eclipse. Otóż ​​to. Twój problem powinien zniknąć.


cieszę się, że może komuś pomóc :)
Wasim A.

2

Pracuje:

<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

Ponieważ Dialog importowy jest inny w Android Studio 1.0.1, nie mogłem uruchomić wersji Svyatoslav Lobachs.

Zamiast tego pobrałem „Android Support Repository” w Menedżerze SDK. Następnie dodano

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

do build.gradle. Pracował dla mnie.



1

Ten sam problem, co PO, wystąpił po kliknięciu mojego projektu prawym przyciskiem myszy i wybraniu opcji Zamknij niepowiązane projekty .

W moim przypadku problem został rozwiązany przez ponowne otwarcie projektu appcompat_v7 i wyczyszczenie / przebudowanie obu projektów.


1

Zdarzyło mi się, gdy Eclipse (Luna) / AndroidSDK (nie Android Stduio) był używany z najnowszymi narzędziami i biblioteką od 14 stycznia 2015 r. Podczas projektu takiego jak HelloWorld. Kiedy zainstalowałem te narzędzia i uczyniłem HelloWorld pierwszą aplikacją, zaakceptowałem wszystkie wartości domyślne. - To jest problem w moim przypadku.

Najpierw sprawdź, czy biblioteka „Android Support Library” jest zainstalowana. Jeśli nie, zainstaluj go. Nie jest domyślnie instalowany. Możesz to wszystko zrobić w „Menedżerze SDK Androida” dostępnym w menu.

(Menedżer zestawu SDK systemu Android -> Dodatkowe -> Biblioteka obsługi systemu Android)

Błogosławieństwa, (dłużnik) <> <


1

Najszybsze rozwiązanie:

kliknij prawym przyciskiem myszy na projekt -> Narzędzia Android -> Dodaj bibliotekę wsparcia ..

wprowadź opis zdjęcia tutaj


0

Zrobiłem z tego naprawdę głupi błąd. Kiedy otrzymywałem ten sam błąd za każdym razem, nie mogłem zrozumieć, co było nie tak. potem kliknęło mnie, że po zamknięciu wszystkich projektów w moim miejscu pracy i to był czas, od którego zaczęły się wszystkie problemy. Więc po prostu sprawdź, czy Twój „appcompat_v7” nie jest zamknięty. Jeśli tak, otwórz projekt, klikając dwukrotnie, a następnie wyczyść i ponownie zbuduj projekt. W moim przypadku błędy zniknęły. Miłego kodowania!


0

Nie jestem pewien, czy biblioteka wsparcia dla wersji 13 była dostępna, kiedy to pytanie zostało opublikowane, ale na wypadek, gdyby ktoś nadal miał problemy, zauważyłem, że dodanie android-support-v13.jarpoprawi wszystko. Oto jak to zrobiłem:

  1. Kliknij projekt prawym przyciskiem myszy -> Właściwości
  2. Wybierz Ścieżkę budowania Java z spisu treści po lewej stronie
  3. Przejdź do zakładki Biblioteki
  4. Dodaj przycisk Zewnętrzne słoiki i wybierz <your sdk path>\extras\android\support\v13\android-support-v13.jar

0

W przypadku Androida Studio lub IntelliJ wystarczy zaktualizować swoje zależności w gradle.build. Użyłem następujących:

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

0

Nie wiem, ilu z was to zauważyło. Wspieraj bibliotekę „appcompat_v7”, a twój projekt powinien znajdować się w tym samym katalogu (mam na myśli katalog obszaru roboczego). Nie czyść projektu, dopóki nie będzie wolny od błędów, inaczej będziesz miał trudny czas z R.javą


0

Lepiej przygotuj nowy projekt pod dowolną nazwą, a następnie użyj appcompat_v7, który program tworzy.

Right Click Project-> properties->Android

W bibliotece sekcji Addwybierz bibliotekę appcompat.


0

w zaćmieniu kliknij prawym przyciskiem myszy swój projekt-> wybierz ścieżkę kompilacji, a następnie wybierz konfiguruj ścieżkę kompilacji. w oknie wybierz żądany plik jar i odśwież projekt


0

Przyjęte rozwiązanie kiedyś działało dla mnie, ale nie teraz. Musiałem odtworzyć cześć tego samego świata (!) W nowym obszarze roboczym, zmusić go do kompilacji, a następnie skopiowałem wszystkie katalogi, w tym .hgi .hgignore. hg diffprzedstawia:

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

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

Wygląda na to, że Eclipse chce się skompilować dla API 21 i nic nie robi z API 19. Darkly.


0

Jeśli dodałeś bibliotekę appCompat i podałeś odpowiednie odniesienie do appCompat z lokalizacji SDK, spróbuj „unieważnić pamięci podręczne / Uruchom ponownie” .
Można go znaleźć w menu „Plik” w Android Studio.


0

W moim przypadku problem wystąpił, ponieważ chciałem użyć zestawu SDK, który nie zawiera wymaganej biblioteki. Kiedy zwiększyłem min. Poziom SDK problem zniknął. Oczywiście, włączając bezpośrednio samą bibliotekę, należy również usunąć błąd.


0

Zapomnieć wszystko. Wystarczy użyć biblioteki appcompat pobranej za pomocą Android Studio. Ma wszystkie brakujące definicje. Bez względu na to, czy korzystasz z Eclipse, czy nie.


0

Miałem ten sam problem i nawet po zaimportowaniu / dodaniu jar / biblioteki, jak wspomniano w odpowiedziach, nie rozwiązałoby to błędu. Z frustracji właśnie utworzyłem nowy obszar roboczy i utworzyłem nowy projekt Androida, który automatycznie zaimportował appcompat_v7 i nie było żadnych błędów podczas czyszczenia i kompilacji. Nie musiałem ręcznie importować pojedynczego słoika / biblioteki. Tylko do twojej wiadomości Używam Eclipse Mars.1 Release (4.5.1) i napotykałem dokładnie ten sam problem za każdym razem, gdy tworzyłem nowy projekt Androida.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.