Android項(xiàng)目使用support v7時(shí)遇到的各種問(wèn)題
摘要?當(dāng)我們開(kāi)發(fā)android應(yīng)用需要用到android-support-v7-appcompat.jar這個(gè)庫(kù)時(shí)(比方說(shuō)要在2.2版本上使用actionbar和fragment),在項(xiàng)目中導(dǎo)入v4和v7這兩個(gè)庫(kù)之后,新手往往會(huì)遇到一些問(wèn)題。在這里,總結(jié)一下可能遇到的問(wèn)題,以及解決的方法。
目錄[-]
工具/原料 方法/步驟
當(dāng)我們開(kāi)發(fā)android應(yīng)用需要用到android-support-v7-appcompat.jar這個(gè)庫(kù)時(shí)(比方說(shuō)要在2.2版本上使用actionbar和fragment),在項(xiàng)目中導(dǎo)入v4和v7這兩個(gè)庫(kù)之后,新手往往會(huì)遇到一些問(wèn)題。在這里,總結(jié)一下可能遇到的問(wèn)題,以及解決的方法。
工具/原料
需要兩個(gè)庫(kù):android-support-v4.jar,android-support-v7-appcompat.jar
溫馨提示:這兩個(gè)庫(kù)最好版本一樣,否則可能會(huì)有一些其他問(wèn)題產(chǎn)生。
這兩個(gè)庫(kù)可以從sdk下的sdkextrasandroidsupport中獲取
方法/步驟
首先是在項(xiàng)目中導(dǎo)入這兩個(gè)庫(kù)
可以通過(guò)在項(xiàng)目根目錄創(chuàng)建一個(gè)libs文件,然后把這兩個(gè)庫(kù)拷貝到里面,然后eclipse刷新一下這個(gè)項(xiàng)目,eclipse會(huì)智能添加這兩個(gè)庫(kù)
添加完之后,可能遇到的問(wèn)題:
一類問(wèn)題: ?values......No resource found
比方說(shuō):
resvaluesstyles.xml:4: error: Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Light.DarkActionBar'.
對(duì)于values這個(gè)地方產(chǎn)生的no resource found問(wèn)題,說(shuō)明是沒(méi)有v7下的資源。
解決方法:
添加資源庫(kù),針對(duì)上面的例子,AppCompat這個(gè)是v7里的,所以缺少的是v7的資源。從sdk去獲取,路徑是sdkextrasandroidsupportv7appcompat,把這個(gè)library通過(guò)eclipse導(dǎo)入(import)。然后之前的項(xiàng)目添加該lib,再clean下。這樣上面的問(wèn)題可以搞定。
二類問(wèn)題:values-v11,values-v21,values-v17等等下的No resource found
比方說(shuō):
appcompatresvalues-v21styles_base.xml:75: error: Error retrieving parent for item: No resource found that matches the given name 'android:Widget.Material.ActionButton'.
appcompatresvalues-v11themes_base.xml:178: error: Error: No resource found that matches the given name: attr 'android:windowActionBar'.
appcompatresvalues-v14themes_base.xml:27: error: Error: No resource found that matches the given name: attr 'android:actionModePasteDrawable'.
對(duì)于在values-v11這類針對(duì)不同android target加載的values下找不到資源的問(wèn)題,原因還是一樣,找不到這個(gè)target下的資源。
解決方法:
很簡(jiǎn)單,把project.properties里的target=android-8或者可能稍微高點(diǎn),改到target=android-21或者更高(前提是sdk已經(jīng)下載了該target的庫(kù)),然后再clean下項(xiàng)目。這樣這類問(wèn)題也就解決了,當(dāng)然你在Manifest里不要忘記加上uses-sdk,來(lái)允許最低版本。
4
最后附上測(cè)試寫(xiě)的actionbar tab加上fragment,在Android2.3.4三星手機(jī)上的實(shí)現(xiàn)結(jié)果