326

我試圖實現幾天前由Google發佈的新的ActionBar支持庫。在過去,我已經使用與Google Developer's Support Library Setup頁面上列出的方法相同的方法成功實現了ActionBarSherlock,使用了關於如何包含資源的指南(與ActionBarSherlock的工作方式類似)。我將庫項目作爲一個庫加載到我自己的項目中。無法找到新的Android ActionBar支持的Theme.AppCompat.Light

我可以告訴圖書館加載正常。如果不是在我的MainActivity.java上擴展Activity,而是將其更改爲擴展ActionBarActivity(按照Google的說明),則不會發生錯誤 - 並且它可以正確導入。

我甚至試圖繞過style.xml文件並直接到的AndroidManifest.xml添加@style/Theme.AppCompat.Light兩者<application><activity>android:theme="@style/ThemeAppCompat.Light"與導致相同錯誤的所有嘗試。

現在的問題是我不能讓它改變主題,更不用說即使沒有拋出錯誤的構建。下面是我收到的錯誤,後面是我更改爲使用新主題的style.xml文件。

我有與Android應用程序一起工作的中等體驗,並且正在使用最新版本的支持庫和SDK編譯API 18(Android 4.3)來運行Eclipse。

錯誤接收過程中生成

error: Error retrieving parent for item: No resource found that matches the given name '@style/Theme.AppCompat.Light'. styles.xml /ActBarTest/res/values line 3 Android AAPT Problem

style.xml

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

有什麼建議?這從來都不是ActionBarSherlock的問題。我想要使​​用這個新的支持庫。它幾乎看起來像.jar加載,但不是資源。

+1

嘗試清理該項目,也許你需要重新加載依賴關係,以便AppCompact的樣式也可以重新加載 – TheWizKid95

+2

@ TheWizKid95我對我試圖實現的應用程序和庫進行了清理。根據Eclipse,它們都沒有導致任何更改的代碼,也沒有解決任何問題。 –

+0

您是否添加了資源支持庫?將jar添加到libs是不夠的。 –

回答

383

你下一步需要做:

  1. File->Import (android-sdk\extras\android\support\v7)。選擇「AppCompat」
  2. Project-> properties->Android.在部分庫「Add」中選擇「AppCompat」
  3. 就這樣!

注:如果您使用的是「機器人:showAsAction」菜單項,您需要更改前綴的Android作爲例子http://developer.android.com/guide/topics/ui/actionbar.html

+61

這對我不起作用。我確實在這裏寫了什麼,但最終發現了數百個找不到匹配給定名稱錯誤的資源。缺少的資源是API 11及更高版本中包含的樣式,但這個東西應該從API 7開始工作。是否有一些我缺少的連接!?! – apocalypz

+2

我應該寫什麼來代替YOUR_APP.showAsAction? –

+42

如何在IntelliJ IDEA中解決這個問題? – herbertD

7

你需要參考$ ANDROID_SDK /演員/安卓/支持/ V7 /程序兼容性

+0

你想介紹一下如何引用它的更多細節?我已經引用了這個確切的文件夾作爲Android開發人員的說明。完全按照他們網站上所述的方向進行。我可以告訴它至少部分被引用,因爲ActionBarActivity正在被擴展而沒有錯誤。 –

+3

參考'appcompat'作爲Android庫,您的主要項目資源可以從appcompat找到主題 – crossle

+0

這就實現了。我以前是在Java Build Path中做的。 –

22

我做了以下在Eclipse的Android支持庫(APL)項目和主項目(MP ):

  1. 有保證的兩APLMP具有相同的minSdkVersiontargetSdkVersion

  2. 新增APLMP構建依賴:

    1. 走進的「屬性> Java構建路徑」 MP,然後

    2. 選擇「項目「選項卡並添加APL

  3. MP的性質,下 「機器人」,增加了一個參考APL下庫。

1和2得的Java類的引用罰款...但我還是看到了錯誤的manifest.xmlMP試圖從APL引用@style/Theme.AppCompat.Light時工作。當我執行步驟3時,這隻會消失。

+8

絕對使用「@ style/Theme.AppCompat ...」而不是「@android:style/Theme.AppCompat ...」。這個答案加上#3解決了我的問題。 – BeccaP

+0

點2似乎不正確。它會導致構建錯誤日誌消息,如下所述並在此修復:http://stackoverflow.com/questions/18421274/android-could-not-find-android-support-v7-appcompat-apk-error – OneWorld

26

我將分享我對這個問題的經驗。因爲這個,我瘋了,但是我發現問題是Eclipse本身的錯誤,而不是我的代碼: In eclipse, unable to reference an android library project in another android project

因此,如果您的C:驅動器和您的項目中有Android支持庫在計算機上的D:驅動器中,Eclipse將無法正常運行,並且不會知道Android支持庫的位置(綠色勾號變成紅色叉號)。爲了解決這個問題,你需要將兩個項目移動到同一個硬盤上。

+4

謝謝。那是我的情況。在步驟1(文件 - >導入(android-sdk \ extras \ android \ support \ v7)。選擇「appcompat」),需要檢查「copy to workspace」。 – Hong

+3

是的,它也讓我發瘋。 – umerk44

+0

我面臨類似的問題。非常感謝,這真的很棘手 – SILINIK

3

按照@rcdmk的步驟操作。 刪除您的項目中的android支持v4.jar。它與appcompat中找到的新更新版本衝突。

107

如果和我一樣,您正在關注http://developer.android.com/training/basics/actionbar/setting-up.html上的Android教程並且不斷收到此錯誤,請嘗試更改所有styles.xml文件中的AppBaseTheme樣式。詳細:

  1. 在文件res/values/styles.xml改變線:

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

    到:

    <style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light"> 
    
  2. 在文件res/values-v11/styles.xml改變線:

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

    到:

    <style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light"> 
    
  3. 在文件res/values-v14/styles.xml更改線路:

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

    到:

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

現在,應用程序應該運行正常。

+11

是的,這對我有效。關鍵要注意的是,在主題(樣式)中構建的父屬性「android:」前綴中,而沒有此前綴的值引用您自己的樣式,或者鏈接到的任何庫中的樣式...例如android-support -V7-程序兼容性。 –

+0

在新的Android項目中沒有'res/values/styles.xml'。至少不是當你用'android create project'創建它時。 – weberc2

+0

當您使用嚮導選擇全屏應用並隱藏控件創建項目時,您將獲得styles.xml –

22

如果您修改了「項目結構模塊」,這是Android Studio中可能發生的問題。 在這種情況下,您可能需要再次添加依賴關係。在文本編輯器中編輯 '的​​build.gradle' 文件,包括所需的相關性:

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

這應該與lib組件,更新您的 '{} your_project_name .iml' 文件:

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

請記住有2 * .iml文件。具有庫條目的文件夾包含在項目的子文件夾中,並具有小寫的文件名。 –

+2

這解決了我的問題。將appcompat添加到內部build.gradle中的依賴關係中。我很遺憾地說我手動編輯以匹配另一個破壞事情的項目! –

0

我做這是一個非常愚蠢的錯誤。每當我無法弄清楚什麼是錯的時候,我得到同樣的錯誤。那麼當我關閉了我的工作空間中的所有項目之後,它就點擊了我,那是所有問題開始之後的時間。所以只需檢查你的「appcompat_v7」是否關閉。如果是通過雙擊打開項目,然後清理並重新構建項目。在我的情況下,錯誤消失了。快樂的編碼!

0

我不確定在發佈此問題時是否可以使用v13支持庫,但如果有人仍在掙扎,我已經看到添加android-support-v13.jar將修復所有問題。 這是我做的:

  1. 右鍵單擊項目 - >屬性
  2. 選擇Java從內容
  3. 左側表
  4. 轉到圖書館標籤構建路徑
  5. 添加外部罐子上的按鈕和選擇<your sdk path>\extras\android\support\v13\android-support-v13.jar
2

我有同樣的問題,浪費我的4-5小時的解決方案。我的問題解決了;

  1. 從SDK管理器刪除軟件包「Android支持庫」和「Android支持庫」。
  2. 重新安裝 「Android的支持庫」 和 「Android的支持庫」
  3. 刪除 「Android的支持-V7-程序兼容性」 或「appcompat_v7你在你的項目中還有什麼。
  4. 導入Android的支持-V7-程序兼容性從「adt-bundle-windows-x86_64-20140702 \ sdk \ extras \ android \ support \ v7 \ appcompat」
  5. 選擇您的項目並從文件中選擇屬性並找到Java Build Path,然後從「Project」選項卡中刪除其他內容然後添加,然後你必須看到「android-support-v7-appcompat」,選擇並將它添加到Project選項卡。
  6. 檢查你的project.properties文件在你的Project文件下面,你會看到l這個; target = android-21 android.library.reference.1 = ../android-support-v7-appcompat 然後檢查AndroidManifest.xml文件,如果目標是21或你選擇了什麼。同時檢查與之前選擇的庫相同的庫參考。

希望你會找到你的解決方案。

+1

幫助我的是使用SDK管理器升級我的Android支持庫,從工作區刪除舊的appcompat庫,重新導入新更新的appcompat庫(並複製到工作區),然後構建。 – Varun

2

作品:

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

最佳答案!謝謝!幫我! –

3

我的問題解決通過以下步驟

  1. 文件 - >導入(Android的SDK \演員\機器人\ SUPPORT \ V7 \程序兼容性)
  2. 右鍵點擊項目 - >屬性 - > Android。在部分圖書館「添加」,然後選擇庫程序兼容性這包括在步驟1
  3. 如果需要,從項目的libs目錄中刪除所有文件
  4. 添加下列文件到項目的libs目錄<SDK-PATH>\extras\android\support\v13android-support-v13.jar

    重新啓動Eclipse。而已。你的問題應該消失。

+0

感謝Wasim,Shukarn!它爲我工作。 – superlinux

+0

很高興幫助別人:) –

0

對於Android Studio或IntelliJ,您只需要在gradle.build中更新您的依賴關係即可。我用下面的:

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

我遇到了同樣的問題,因爲在我的項目上右擊後,OP和選擇關閉不相關的項目

在我的情況下,我通過重新打開appcompat_v7項目和清理/重建這兩個項目來解決問題。對於IntelliJ IDEA或Android Studio:

4

對於IntelliJ IDEA或Android Studio:

將此應用添加到應用。gradle這個構建文件

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

更換-v:xx.0+,與您的構建目標,如果你有19臺 那麼它一定是這樣的:

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

它發生在我身上的時候蝕(月亮)/ AndroidSDK(不Android Stduio)在2015年1月14日期間在HelloWorld這樣的項目中使用了最新的工具和庫。當我安裝這些工具並將HelloWorld作爲第一個應用程序時,我接受了所有默認設置。 - 這是我的情況。

首先,檢查是否安裝了「Android支持庫」庫。 如果沒有,請安裝它。它沒有默認安裝。 您可以在菜單中的「Android SDK manager」中完成所有操作。

(Android的SDK管理器 - >附加 - > Android的支持庫)

祝福, (債務人)<> <

1

最快的解決辦法:

右擊項目 - > Android的工具 - >添加支持庫..

enter image description here

2

由於導入撥號在Android Studio 1.0.1中不同,我無法使Svyatoslav Lobachs版本正常工作。

相反,我在SDK管理器中下載了「Android Support Repository」。然後添加

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

build.gradle。爲我工作。

0

我不知道你們中有多少人注意到了這一點。支持庫「appcompat_v7」和你的項目應該在同一個目錄下(我的意思是工作區目錄)。不要清理你的項目,直到它沒有錯誤爲止,否則你將與R.java有困難的時間。

0

你最好用任何名字創建新項目,然後使用appcompat_v7程序創建新項目。

Right Click Project-> properties->Android 

在部分庫Add並選擇庫appcompat。

0

在eclipse中右鍵單擊您的項目 - >選擇構建路徑,然後選擇配置構建路徑。從窗口中選擇你想要的jar文件並刷新你的項目

0

被接受的解決方案曾經爲我工作過一次,但不是現在。我必須在新的工作區重新創建一個同樣類型的Hello World(!),並將其編譯,然後複製所有目錄,包括.hg.hgignorehg diff顯示:

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

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

它看起來像Eclipse希望編譯API 21和未能做到與API 19猜謎什麼。

9

對於Android Studio 1.2。2

降「機器人」從parent屬性值:

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

它的有點晚了,但這裏是我如何得到它AndroidStudio完成!

上的應用程序右鍵點擊轉到性能 Right click on app to goto properties

轉到依賴,並點擊「+」號,並選擇庫的依賴關係 Go to Dependencies and click on '+' sign and choose library dependency 選擇程序兼容性-V7 Choose appcompat-v7

+0

這對我最適合。謝謝! – sjsc

0

如果已經添加程序兼容性庫也已經從SDK位置給appCompat提供了適當的參考,嘗試「無效緩存/重啓」
您可以從Android Studio中的「文件」菜單中找到它。

11

IntelliJ IDEA解決方案。

1.運行Android SDK中經理並安裝最新的SDK支持Android Libarary。 SDK和Android支持Libarary的版本應該是相同! 23在我的情況。另一個變種會給你錯誤。
enter image description here
2.將IDEA項目的SDK版本更改爲您在上一步中安裝的最後一個項目。 (ps。你可能不使用Maven)。
enter image description here

從現有SOURSE添加新的模塊到你的IDEA項目。
enter image description here

4.添加程序兼容性項目。 !!!也應該在最後一個SDK下!(PS說 「是」,在這一步驟的過程中的任何地方。)
enter image description here

5.你的主要項目模塊的打開設置,並添加到它未來3只依賴條件:

5.1。模塊依賴。選擇Android的支持-V7-程序兼容性
enter image description here

5.2。 2 pc。庫依賴關係。添加Android-sdk \ extras \ android \ support \ v7 \ appcompat \ libs \ android-support-v4.jarandroid-support-v4 \ android-support-v7-appcompat。罐子
enter image description here

總共這將是:
enter image description here

6.非常重要的!
添加帶前綴@style的主題(不是另一個!)
enter image description here



Android Studio中的溶液。

1.運行Android SDK中經理並安裝最新的SDK支持Android Libarary。 SDK和Android支持Libarary的版本應該是相同! 23在我的情況。另一個變種會給你錯誤。
enter image description here

2.添加旁邊的build.gradle

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

附:如果您是Android開發人員的新手,我強烈建議您立即轉移到Android Studio & Gradle - 您將獲得管理Android應用程序的最簡單方法。

+0

最好的答案我曾經在關於android發現 –

0

在我的情況下,因爲我想使用不包含所需庫的SDK,所以出現了問題。當我增加分鐘。 SDK級別的問題消失了。當然直接包括圖書館本身,也應該刪除錯誤。

0

忘掉一切。只需使用使用Android Studio下載的appcompat庫即可。它有所有缺失的定義。無論你是否在Eclipse中使用。

0

我有同樣的問題,甚至在導入/添加一個jar /庫,如答案中所述,它不會解決錯誤。出於挫折感,我創建了一個新的工作空間並創建了一個全新的android項目,並且它自動導入了appcompat_v7,並且在清理和構建時沒有錯誤。不必手動導入單個jar /庫。只是FYI我正在使用eclipse Mars.1 Release(4.5.1),並且每次創建一個新的android項目時都面臨完全相同的問題。

0

我有錯誤消息:

Error:(18) Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.NoActionBar'.

與此配置:

compileSdkVersion 23 
    buildToolsVersion "23.0.1" 

我必須從改變主題:

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

到:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"/> 
相關問題