2015-07-28 55 views
3

我使用RecyclerView我的應用程序,但在運行的應用程序崩潰和我的logcat寫着:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.recyclertest/com.example.recyclertest.MainActivity}: android.view.InflateException: Binary XML file line #7: Error inflating class android.support.v7.widget.RecyclerView 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
      at android.app.ActivityThread.access$800(ActivityThread.java:151) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
      at android.os.Handler.dispatchMessage(Handler.java:102) 
      at android.os.Looper.loop(Looper.java:135) 
      at android.app.ActivityThread.main(ActivityThread.java:5254) 
      at java.lang.reflect.Method.invoke(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:372) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
    Caused by: android.view.InflateException: Binary XML file line #7: Error inflating class android.support.v7.widget.RecyclerView 
      at android.view.LayoutInflater.createView(LayoutInflater.java:633) 
      at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743) 
      at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) 
      at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
      at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
      at android.view.LayoutInflater.inflate(LayoutInflater.java:365) 
      at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:378) 
      at android.app.Activity.setContentView(Activity.java:2145) 
      at com.example.recyclertest.MainActivity.onCreate(MainActivity.java:20) 
      at android.app.Activity.performCreate(Activity.java:5990) 
      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) 
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
            at android.app.ActivityThread.access$800(ActivityThread.java:151) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
            at android.os.Handler.dispatchMessage(Handler.java:102) 
            at android.os.Looper.loop(Looper.java:135) 
            at android.app.ActivityThread.main(ActivityThread.java:5254) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:372) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
    Caused by: java.lang.reflect.InvocationTargetException 
      at java.lang.reflect.Constructor.newInstance(Native Method) 
      at java.lang.reflect.Constructor.newInstance(Constructor.java:288) 
      at android.view.LayoutInflater.createView(LayoutInflater.java:607) 
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743) 
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) 
            at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
            at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
            at android.view.LayoutInflater.inflate(LayoutInflater.java:365) 
            at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:378) 
            at android.app.Activity.setContentView(Activity.java:2145) 
            at com.example.recyclertest.MainActivity.onCreate(MainActivity.java:20) 
            at android.app.Activity.performCreate(Activity.java:5990) 
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) 
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
            at android.app.ActivityThread.access$800(ActivityThread.java:151) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
            at android.os.Handler.dispatchMessage(Handler.java:102) 
            at android.os.Looper.loop(Looper.java:135) 
            at android.app.ActivityThread.main(ActivityThread.java:5254) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:372) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
            at com.a 

ndroid.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
    Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v7/recyclerview/R$styleable; 
      at android.support.v7.widget.RecyclerView.<init>(RecyclerView.java:434) 
      at android.support.v7.widget.RecyclerView.<init>(RecyclerView.java:404) 
            at java.lang.reflect.Constructor.newInstance(Native Method) 
            at java.lang.reflect.Constructor.newInstance(Constructor.java:288) 
            at android.view.LayoutInflater.createView(LayoutInflater.java:607) 
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743) 
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) 
            at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
            at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
            at android.view.LayoutInflater.inflate(LayoutInflater.java:365) 
            at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:378) 
            at android.app.Activity.setContentView(Activity.java:2145) 
            at com.example.recyclertest.MainActivity.onCreate(MainActivity.java:20) 
            at android.app.Activity.performCreate(Activity.java:5990) 
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) 
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
            at android.app.ActivityThread.access$800(ActivityThread.java:151) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
            at android.os.Handler.dispatchMessage(Handler.java:102) 
            at android.os.Looper.loop(Looper.java:135) 
            at android.app.ActivityThread.main(ActivityThread.java:5254) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:372) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
    Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v7.recyclerview.R$styleable" on path: DexPathList[[zip file "/data/app/com.example.recyclertest-2/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]] 
      at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 
      at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 
      at java.lang.ClassLoader.loadClass(ClassLoader.java:469) 
            at android.support.v7.widget.RecyclerView.<init>(RecyclerView.java:434) 
            at android.support.v7.widget.RecyclerView.<init>(RecyclerView.java:404) 
            at java.lang.reflect.Constructor.newInstance(Native Method) 
            at java.lang.reflect.Constructor.newInstance(Constructor.java:288) 
            at android.view.LayoutInflater.createView(LayoutInflater.java:607) 
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743) 
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) 
            at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
            at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
            at android.view.LayoutInflater.inflate(LayoutInflater.java:365) 
            at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:378) 
            at android.app.Activity.setContentView(Activity.java:2145) 
            at com.example.recyclertest.MainActivity.onCreate(MainActivity.java:20) 
            at android.app.Activity.performCreate(Activity.java:5990) 
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) 
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
            at android.app.ActivityThread.access$800(ActivityThread.java:151) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
            at android.os.Handler.dispatchMessage(Handler.java:102) 
            at android.os.Looper.loop(Looper.java:135) 
            at android.app.ActivityThread.main(ActivityThread.java:5254) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:372) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
    Suppressed: java.lang.ClassNotFoundException: android.support.v7.recyclerview.R$styleable 
      at java.lang.Class.classForName(Native Method) 
      at java.lang.BootClassLoader.findClass(ClassLoader.java:781) 
      at java.lang.BootClassLoader.loadClass(ClassLoader.java:841) 
      at java.lang.ClassLoader.loadClass(ClassLoader.java:504) 
      ... 27 more 
    Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available 

我加android- support-v7-cardview,android-support-v7-gridlayout, android-support-v7-recyclerview和android-support-v7-appcompat 到我的項目。 我使用的IntelliJ IDEA

一對API等級22

+0

我不熟悉intellji,但是你的問題似乎是因爲你只添加了那些項目的jar文件。請檢查並將它們添加爲依賴關係模塊。也許這個鏈接將幫助你https://www.jetbrains.com/idea/help/configuring-module-dependencies-and-libraries.html – Minhtdh

+0

我也將它們添加到依賴關係也無法正常工作...當我打開android支持-v7-recyclerview.jar recyclerview文件夾爲空,錯誤指向「/ recyclerview/R $ styleable」,這是爲什麼? – Masoudfcr

回答

1

我也得到了類似的錯誤而回。 確保您使用的不是

<RecyclerView> 

標籤,因爲它是在你的代碼,並使用

<android.support.v7.widget.RecyclerView> 

和您的build.gradle文件具有以下代碼

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

照顧這兩件事爲我解決了這個錯誤。 如果你的情況你做了其他的事情,那麼請分享你的代碼,以便我可以指出錯誤的原因。

+0

我沒有使用gradle,我使用intellij的想法,我將所有這些庫添加到我的項目並設置爲依賴關係 – Masoudfcr

+0

分享您的代碼 – bpncool

4

我仍然在使用Eclipse,而不是Intellij,但它可能會對您有所幫助,因爲在升級到最新版本的支持庫後,今天我偶然發現了這個錯誤。 我以前只是把recyclerview jar複製到我的項目; lib文件夾中並添加到依賴項中。顯然這不是正確的方式了。我必須重新添加庫作爲「資源庫」 - 幾乎與cardview庫需要添加的方式相同。

對於Eclipse,我只需按照「添加資源庫」一節中的說明操作https://developer.android.com/tools/support-library/setup.html。 FWIW我必須在導入過程中將新添加的recyclerview標記爲庫(默認不是,並且此步驟在說明中跳過了)。

我希望它有幫助!

+1

在文檔中他們不會談論Eclipse用戶....您能解釋一下如何在Eclipse中添加資源庫? –

7

您需要清除recyclerview lib項目並重新構建它。然後建立你的應用程序現在必須找到課程。

+0

哦,我的上帝你的回答就像我的上帝 – ANinJa

+1

@ANinJa如果你停止使用Eclipse並開始使用Android Studio,那將會更好。在Android Studio中很容易管理外部庫,而不是Eclipse – Nik

+0

,但是在eclipse中2-3年後運行項目的公司會如何呢?將來Google會關閉所有的Eclipse支持? – ANinJa

0

今天我遇到了同樣的錯誤。 我打開了我的項目結構 - >模塊。 展開模塊並選擇Android選項。 將支持庫模塊爲「庫模塊」,那麼它的工作

我希望它能幫助 Project Structure screen shot

0

我有保存錯誤。半小時後,我發現,在項目結構中,recyclerview未被標記爲「庫模塊」。這個設置解決了問題

相關問題