Theme.AppCompat.Light for New Android ActionBar Desteği Bulunamıyor


354

Birkaç gün önce Google tarafından yayınlanan yeni ActionBar destek kitaplığını uygulamaya çalışıyorum . Geçmişte, Google Geliştirici'nin Destek Kitaplığı Kurulum sayfasında listelenen aynı yöntemi kullanarak - ActionBarSherlock'un nasıl yaptığına benzer) kılavuzu kullanarak ActionBarSherlock'u başarıyla uyguladım . Kendi projeme de kütüphane olarak yüklediğim kütüphane projesi var.

Kütüphanenin iyi yüklendiğini söyleyebilirim. MainActivity.java'mdaki Etkinliği uzatmak yerine, ActionBarActivity'yi (Google'ın talimatlarına göre) genişletecek şekilde değiştirdiğimde hiçbir hata oluşmuyor ve doğru bir şekilde içe aktarılıyor.

Hatta style.xml dosyasını atlayarak ve ekleme çalıştı @style/Theme.AppCompat.Lightikisi için AndroidManifest.xml için doğrudan <application>ve <activity>birlikte android:theme="@style/ThemeAppCompat.Light"aynı hata kaynaklanan tüm girişimleri ile.

Şimdi mesele, temayı değiştirmeyi alamıyorum, bir hata bile atmadan bile yapalım. Aşağıda aldığım hata, ardından yeni temayı kullanmak için değiştirdiğim style.xml dosyası.

Android uygulamalarıyla çalışma konusunda ılımlı bir deneyime sahibim ve Eclipse'yi Destek Kitaplıkları'nın en son sürümü ve API 18 (Android 4.3) ile derleyen SDK ile çalıştırıyorum.

Derleme Sırasında Alınan Hata

hata: Öğe için üst öğe alınırken hata oluştu: '@ style / Theme.AppCompat.Light' adıyla eşleşen kaynak bulunamadı. styles.xml / ActBarTest / res / değerleri satır 3 Android AAPT Sorunu

style.xml

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

Herhangi bir öneri? Bu, ActionBarSherlock ile ilgili bir sorun değildi. Bu yeni destek kitaplığını kullanmak üzerinde çalışmak istiyorum. Neredeyse .jar yükleniyor gibi görünüyor, ama kaynaklar değil.


1
Projeyi temizlemeye çalışın, belki de
AppCompact'ten

2
@ TheWizKid95 Ben uygulamaya çalışıyorum benim app ve kütüphane bir temizlik yaptım. Hiçbiri Eclipse'e göre herhangi bir kod değiştirmedi ve sorunların hiçbirini çözmedi.
Brandon Enriquez

Kaynaklar ile destek kitaplığı eklediniz mi? Libs'e kavanoz eklemek yeterli değildir.
Gabriele Mariotti

@GabrieleMariotti Evet Google'ın belirttiği gibi kaynakları ve bir proje kütüphanesini ekledim.
Brandon Enriquez

Benim için işe yarayan, onu çalışma alanına bir proje olarak eklemekti. Sadece kavanozu içe aktarmak ve bunları yapı yoluna eklemek işe yaramadı.
Johan

Yanıtlar:


386

Daha sonra yapmanız gerekenler:

  1. File->Import (android-sdk\extras\android\support\v7). "AppCompat" ı seçin
  2. Project-> properties->Android. Bölüm kitaplığında "Ekle" ve "AppCompat" ı seçin
  3. Hepsi bu!

Not: Menü öğesinde "android: showAsAction" kullanıyorsanız, ön ek androidini http://developer.android.com/guide/topics/ui/actionbar.html örneğinde olduğu gibi değiştirmeniz gerekir.


65
Bu benim için işe yaramıyor. Burada yazılanı tam olarak yapıyorum, ancak verilen ad hatalarıyla eşleşen yüzlerce Kaynak bulunamadı. Kaynaklar, eksik olan API 11 ve üstündeki stillerdir, ancak bu şey API 7'den çalışmalıdır. Eksik olduğum bir bağlantı var mı?!
apocalypz

5
Benzer bir sorunla karşılaştığımda, Theme.AppCompat.Light.NoActionBar teması benim appcompat kütüphanemde mevcut değil.
JMRboosties

9
File-Import altında 'android-sdk' bulamıyorum. Sadece 'andoird' görüyorum. Kimse?
shahar eldad

2
apocalypz, bence kaynakları kaçırıyorsunuz çünkü kütüphaneyi kaynaklar olmadan içe aktardınız. "Kaynaklarla kütüphane ekleme" linkini geliştiriciyiz.android.com
tools/support

1
Yukarıdaki adımları uygulayarak + sdk \ extras \ android \ support \ v13android-support-v13.jar dosyasını projenin libs dizinine eklemek sorunu çözecektir.
Wasim A.Kasım

119

Benim gibi, http://developer.android.com/training/basics/actionbar/setting-up.html adresindeki Android eğiticisini takip ediyorsanız ve bu hatayı almaya devam ediyorsanız, AppBaseThemestili tüm styles.xmldosyalarda değiştirmeyi deneyin . Detayda:

  1. Dosyada res/values/styles.xmlsatırı değiştirin:

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

    için:

    <style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">
  2. Dosyada res/values-v11/styles.xmlsatırı değiştirin:

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

    için:

    <style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">
  3. Dosyada res/values-v14/styles.xmlsatırı değiştirin:

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

    için:

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

Şimdi uygulama iyi çalışmalıdır.


11
Evet bu benim için çalıştı. Dikkat edilmesi gereken en önemli şey, "android:" üst özniteliğinde temalarda (stiller) yerleşik öneklerin bulunması, bu öneki bulunmayan bir değerin kendi stillerinizi veya bağlandığınız herhangi bir kütüphanedeki stilleri referans alması ... android desteği gibi -v7-AppCompat.
John Bentley

Orada hiçbir res/values/styles.xmlyeni bir Android projesi. En azından ile oluşturduğunuzda değil android create project.
weberc2

Sihirbazı kullanarak projeyi oluşturduğunuzda styles.xml'yi alırsınız, tam ekran uygulamasını seçin ve kontrolleri gizleyin
JJ_Coder4Hire

8
Benim için hiçbir şey işe yaramıyor ... 4 saat zaten boşa harcanmış. Hala verilen adla eşleşen kaynak bulunamadı ('theme' de '@ style / Theme.AppCompat.Light' değeri ile). Tam vazgeçmek üzere.
c.fogelklou

2
Bunları başka bir şekilde değiştirmiştim ve aslında projemde işler böyle olmalıydı.
John

28

Bu, Proje Yapısı Modüllerini değiştirirseniz Android Studio'da oluşabilecek bir sorundur. Bu durumda bağımlılıkları tekrar eklemeniz gerekebilir. Bir metin düzenleyicide 'build.gradle' dosyasını gerekli bağımlılıkları içerecek şekilde düzenleyin:

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

Bu, '{your_project_name} .iml' dosyanızı lib bileşenleriyle güncellemelidir:

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

1
Unutmayın ki 2 * .iml dosyası vardır. Kütüphane girişlerine sahip olan kişi projenin alt klasöründe bulunur ve küçük harfli bir dosya adına sahiptir.
David Douglas

2
Bu benim sorunumu çözdü. appcompat iç build.gradle bağımlılık ekleyerek çalıştı. Pişmiş olduğum başka bir projeye uyacak şekilde elle düzenleme yaptığımı söylemekten pişmanım!
JJ_Coder4Hire

28

Deneyimlerimi bu sorunla paylaşacağım. Bu nedenle çıldırıyordum, ama sorunun kodumdan ziyade Eclipse'in kendisiyle ilgili bir hata olduğunu öğrendim: Tutulmada, başka bir android projesinde bir android kütüphane projesine başvuramıyorum

Dolayısıyla, C: sürücünüzde Android Destek Kitaplığı varsa ve bilgisayarınızdaki D: sürücüsünde projeniz varsa, Eclipse düzgün çalışmayacak ve Android Destek Kitaplığı'nın nerede olduğunu bilmeyecektir (yeşil onay işareti kırmızı çarpıya dönüşür) ). Bunu çözmek için her iki projeyi de aynı sabit diske taşımanız gerekir.


4
Teşekkür ederim. Durumum böyle oldu. Adım 1'de (Dosya-> İçe Aktar (android-sdk \ extras \ android \ support \ v7). "Appcompat" öğesini seçin, "çalışma alanına kopyala" yı kontrol etmeniz gerekir.
Hong

Benzer bir sorunla karşılaştım. Çok teşekkürler, gerçekten zor oldu
SILINIK

AndroidStudio'da da aynı sorun var. Ben sadece 3 saat gibi anlamaya çalışarak geçirdi. Teşekkürler!
Ruben Martinez Jr.

Jup. Bunu teyit edebilir ..IntellJ en azından AppCompat ile aynı sorunu var ... bu sorun üzerinde 4 saat boşa.
puelo

Benim için de çözüm buydu. Appcompat_v7 projesinin hedef projeyle aynı sürücüye kopyalanması ve lib olarak eklenmesi, sorunsuz çalışmasını sağlamıştır.
MayaPosch

23

Eclipse'de Android Destek Kütüphanesi ( APL ) projesi ve Ana Proje ( MP ) ile aşağıdakileri yaptım :

  1. Garanti edilmiş hem APL ve MP aynı vardı minSdkVersionve targetSdkVersion.

  2. MP için derleme bağımlılığı olarak APL eklendi :

    1. "Özellikler> Java Build Path" girecek MP ve daha sonra

    2. "Projeler" sekmesini seçme ve APL ekleme .

  3. MP'nin özelliklerinde, "Android" altında, altında, kütüphane altındaki APL'ye .

1 ve 2 Java sınıfları referansları iyi çalışıyor var ... ancak yine de APL referans manifest.xmliçin çalışırken MP için hatayı gördüm . Bu sadece 3. adımı gerçekleştirdiğimde ortadan kayboldu.@style/Theme.AppCompat.Light


9
"@Android: style / Theme.AppCompat ..." yerine "@ style / Theme.AppCompat ..." kullanın. Bu artı bu cevaptan # 3 sorunumu çözdü.
BeccaP

Nokta 2 yanlış görünüyor. Burada açıklandığı ve düzeltildiği gibi bir derleme hata günlüğü iletisine yol açar: stackoverflow.com/questions/18421274/…
OneWorld

18

Biraz geç ama işte AndroidStudio'da bunu nasıl yapacağım!

Özelliklere gitmek için uygulamaya sağ tıklayın Özelliklere gitmek için uygulamaya sağ tıklayın

Bağımlılıklar'a gidin ve '+' işaretine tıklayın ve kitaplık bağımlılığını Bağımlılıklar'a gidin ve '+' işaretine tıklayın ve kitaplık bağımlılığını seçin seçin appcompat-v7'yi seçin Appcompat-v7 seçin


12

IntelliJ IDEA çözümü.

1. Android SDK Yöneticisi'ni çalıştırın ve en son SDK ve Android Destek Kitaplığını yükleyin . SDK ve Android Destek Kütüphanesi'nin sürümü aynı olmalı ! 23 benim durumumda. Başka bir varyant size hataları verecektir. 2. IDEA projenizin SDK sürümünü önceki adımda yüklediğiniz son sürüme değiştirin. (ps. Maven kullanamazsınız).
resim açıklamasını buraya girin

resim açıklamasını buraya girin

3. IDEA projenize mevcut seslerden yeni Modül ekleyin.
resim açıklamasını buraya girin

4. AppCompat projesi ekleyin. !!! Son SDK altında da olmalı! (ps. Bu adımın herhangi bir yerinde "Evet" deyin)
resim açıklamasını buraya girin

5. Ana Proje Modülünüzün ayarlarını açın ve sonraki 3 bağımlılığa ekleyin:

5.1. Modül Bağımlılığı. Seçti android-destek-v7-AppCompat
resim açıklamasını buraya girin

5.2. 2 adet Kütüphane Bağımlılıkları. Ekle android-sdk \ ekstralar \ android \ support \ v7 \ AppCompat \ kütüphanelerini \ android-destek-v4.jar ve android-destek-v4 \ android-destek-v7-appcompat.jar
resim açıklamasını buraya girin

Toplamda:
resim açıklamasını buraya girin

6. Çok önemli !!! @ Style öneki ile
tema ekleyin (başka değil!) .
resim açıklamasını buraya girin



Android Studio çözümü.

1. Android SDK Yöneticisi'ni çalıştırın ve en son SDK ve Android Destek Kitaplığını yükleyin . SDK ve Android Destek Kütüphanesi'nin sürümü aynı olmalı ! 23 benim durumumda. Başka bir varyant size hataları verecektir.
resim açıklamasını buraya girin

2. build.gradle öğesinin yanına ekle

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

PS Android geliştirmede yeniyseniz, şu anda Android Studio ve Gradle'a taşınmanızı şiddetle tavsiye ediyorum - android uygulamanızı yönetmenin en basit yolunu elde edeceksiniz.


Android hakkında
SO'da

10

Android Studio 1.2.2 için

parentÖzellik değerinden "android" bırakın :

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

7

$ ANDROID_SDK / ekstralar / android / destek / v7 / appcompat referansına ihtiyacınız var


Tam olarak nasıl referans verileceği konusunda daha ayrıntılı bilgi almak ister misiniz? Zaten bu klasöre Android Geliştiricileri'nde belirtilen talimatlar olarak başvurdum. Talimatları tam olarak web sitelerinde belirtildiği şekilde takip ettim. ActionBarActivity hatasız bir şekilde genişletildiğinden, en azından kısmen referansta bulunduğunu söyleyebilirim.
Brandon Enriquez

3
appcompatAndroid Kütüphanesi olarak referans , ana proje kaynağınız appcompat'den tema bulabilir
Crossle Song

Hile yaptı. Daha önce Java Build Path içinde yapıyordum.
Brandon Enriquez

5

IntelliJ IDEA veya Android Studio için:

Bunu app.gradle derleme dosyasına ekleyin

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

-v:xx.0+Oluşturma hedefinizle değiştirin , 19 platformunuz varsa şöyle olmalıdır:

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

3

@Rcdmk adımlarını izleyin. SİZİN projede android desteği v4.jar silin. Appcompat içinde bulunan yeni güncellenmiş sürümle çakışıyor.


3

Aynı sorunu yaşadım ve çözüm için 4-5 saatimi boşa harcadım. Sorunum çözüldü;

  1. SDK yöneticisinden "Android Destek Kütüphanesi" ve "Android Destek Deposu" paketlerini silin.
  2. "Android Destek Kitaplığı" ve "Android Destek Deposu" nu yeniden yükleyin
  3. "Android-support-v7-appcompat" veya "appcompat_v7" projenizde başka ne varsa kaldırın.
  4. "Adt-bundle-windows-x86_64-20140702 \ sdk \ extras \ android \ support \ v7 \ appcompat" klasöründen android-support-v7-appcompat dosyasını içe aktarın
  5. Projenizi seçin ve dosyadan özellikleri seçin ve Java Derleme Yolu'nu bulun ve sonra "Proje" sekmesinden orada başka neler silin ve Ekle'yi seçin. "android-support-v7-appcompat" ifadesini görmeli, seçmeli ve Proje sekmesine eklemelisiniz.
  6. Proje dosyalarınızın altındaki project.properties dosyanızı kontrol edin, şöyle göreceksiniz; target = android-21 android.library.reference.1 = .. / android-support-v7-appcompat sonra hedef 21 veya başka ne seçtiğiniz AndroidManifest.xml dosyasını kontrol edin. Ayrıca daha önce seçilen kitaplığınızla aynı kitaplık başvurusunu da denetleyin.

Çözümü bulacağınızı umuyoruz.


1
Bana yardımcı olan, SDK yöneticisini kullanarak Android Destek Kitaplığımı yükseltmek, eski appcompat kitaplığını çalışma alanından silmek, yeni güncellenen appcompat kitaplığını yeniden içe aktarmak (ve çalışma alanına kopyalamak) ve sonra oluşturmaktı.
Varun

3

Sorunum aşağıdaki adımları izleyerek çözülüyor

  1. Dosya-> İçe Aktar (android-sdk \ extras \ android \ support \ v7 \ appcompat)
  2. Project-> properties-> Android öğesini sağ tıklayın. Bölüm kitaplığında "Ekle" ve adım 1'de bulunan kitaplık uygulama paketini seçin
  3. Projenin libs dizinindeki tüm dosyaları sil
  4. projenin libs dizinine aşağıdaki dosyayı ekle <SDK-PATH>\extras\android\support\v13android-support-v13.jar

    Gerekirse Eclipse'i yeniden başlatın. Bu kadar. Sorununuz ortadan kalkmalıdır.


birine yardım sevindim :)
Wasim A.

2

İşler:

<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

Android Studio 1.0.1'de İçe Aktar iletişim kutusu farklı olduğu için Svyatoslav Lobachs sürümünü çalıştıramadım.

Bunun yerine SDK Yöneticisi'nden "Android Destek Deposu" nu indirdim. Sonra eklendi

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

için build.gradle. Benim için çalıştı.



1

Projeme sağ tıklayıp İlişkisiz Projeleri Kapat'ı seçtikten sonra OP ile aynı sorunu yaşadım .

Benim durumumda, appcompat_v7 projesini yeniden açarak ve her iki projeyi de temizleyerek / yeniden inşa ederek sorunu çözdüm .


1

14 Ocak 2015 tarihinden itibaren HelloWorld gibi proje sırasında Eclipse (Luna) / AndroidSDK (Android Stduio değil) en son araçlar ve kütüphane ile kullanıldığında bana oldu. Bu araçları yüklediğimde ve HelloWorld'ü ilk uygulama yaptığımda, tüm varsayılanları kabul ettim. - Benim durumumdaki sorun bu.

İlk olarak, "Android Destek Kitaplığı" kitaplığının yüklü olup olmadığını kontrol edin. Değilse, kurun. Varsayılan olarak yüklenmez. Hepsini menüde bulunan "Android SDK yöneticisi" nde yapabilirsiniz.

(Android SDK Yöneticisi -> Ekstra -> Android Destek Kütüphanesi)

Bereket, (borçlu) <> <


1

En hızlı çözüm:

projeye sağ tıklayın -> Android araçları -> Destek kütüphanesi ekle ..

resim açıklamasını buraya girin


0

Bunun için gerçekten aptalca bir hata yaptım. Her seferinde aynı hatayı alıyorum, neyin yanlış olduğunu anlayamadım. çalışma alanımdaki tüm projeleri kapattığımda ve tüm sorunların başlamasından bu yana geçen zaman beni tıkladı. SO sadece "appcompat_v7" kapalı olmadığını kontrol edin. Bu durumda, projeyi çift tıklatarak açın ve ardından projenizi tekrar temizleyip oluşturun. Benim durumumda hatalar gitti. Mutlu kodlama!


0

Bu soru gönderildiğinde v13 destek kütüphanesinin mevcut olup olmadığından emin değilim, ancak birisinin hala mücadele etmesi durumunda, eklemenin android-support-v13.jarher şeyi düzelteceğini gördüm . Ben böyle yaptım:

  1. Projeye sağ tıklayın -> Özellikler
  2. Soldaki içerik tablosundan Java Oluşturma Yolu'nu seçin
  3. Kütüphaneler sekmesine git
  4. Harici kavanozlar düğmesi ekle ve <your sdk path>\extras\android\support\v13\android-support-v13.jar

0

Android Studio veya IntelliJ için yapmanız gereken tek şey gradle.build içindeki bağımlılıklarınızı güncellemektir. Aşağıdakileri kullandım:

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

0

Kaçınızın bunu fark ettiğini bilmiyorum. Destek kitaplığı "appcompat_v7" ve projeniz aynı dizinde olmalıdır (yani çalışma alanı dizini). Projenizi hatasız olana kadar temizlemeyin, aksi takdirde R.java ile zor zamanlar geçireceksiniz


0

Herhangi bir adla yeni bir proje yapsanız iyi olur, sonra programın yeni yaptığı appcompat_v7'yi kullanın.

Right Click Project-> properties->Android

Bölüm kitaplığında Addve kitaplık uygulama paketini seçin.


0

güneş tutulması projenize sağ tıklayın-> inşa yolunu seçin ve sonra inşa yolunu yapılandır'ı seçin. pencereden istediğiniz jar dosyasını seçin ve projenizi yenileyin


0

Kabul edilen çözüm bir zamanlar benim için çalıştı, ama şimdi değil. Ben, yeni bir çalışma alanında aynı tür (!) Bir selam-dünyayı yeniden yaratmak zorunda o derlemek yaptı, sonra da dahil olmak üzere tüm dizinleri, kopyalanabilir .hgve .hgignore. hg diffgösterileri:

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

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

Eclipse, API 21 için derlemek istiyor ve API 19 ile hiçbir şey yapamıyor gibi görünüyor.


0

Eğer eklediyseniz AppCompat Kütüphane ve ayrıca SDK yerden AppCompat uygun başvuru verdik, denemek "/ Yeniden başlat invalidate önbelleklerini" . Android Studio'daki "Dosya" menüsünden
bulabilirsiniz .


0

Benim durumumda, gerekli kitaplığı içermeyen bir SDK kullanmak istediğimden beri sorun oluştu. Min. SDK düzeyinde sorun ortadan kalktı. Tabii ki doğrudan kütüphanenin kendisi de dahil olmak üzere, hatayı da kaldırmalıdır.


0

Her şeyi unut. Android Studio kullanılarak indirilen appcompat kütüphanesini kullanmanız yeterlidir. Tüm eksik tanımlara sahiptir. Eclipse içinde kullanıp kullanmadığınız önemli değil.


0

Ben de aynı sorunu vardı ve hatta bir kavanoz / kütüphane cevaplar belirtildiği gibi alma / ekleme sonra hatayı çözmek olmaz. Hayal kırıklığı dışında, sadece yeni bir çalışma alanı oluşturdum ve yeni bir android projesi oluşturdum ve otomatik olarak appcompat_v7'yi içeri aktardı ve temiz ve derlemede hata yoktu. Manuel olarak tek bir kavanoz / kütüphane almak zorunda değildi. Sadece FYI Tutulma Mars.1 Sürümünü (4.5.1) kullanıyorum ve her yeni android projesi oluşturduğumda aynı sorunla karşı karşıya kaldım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.