2016-07-06 88 views
0

我下載了導航抽屜項目的圖標here
而且我更改了抽屜項目圖標。然後,我試圖運行我的應用程序。
但是,我的應用程序不工作。改變圖標之前沒事。更改導航抽屜項目的圖標後,應用程序已死

我剛剛將xml文件的圖標文件移動到drawable-v21文件夾。

這是消息。

E/AndroidRuntime: FATAL EXCEPTION: main 
    Process: com.hsk.hallymexam, PID: 11979 
    java.lang.RuntimeException: Unable to start activity ComponentInfo 

    {com.hsk.hallymexam/com.hsk.hallymexam.MainActivity}: android.view.InflateException: Binary XML file line #22: Error inflating class android.support.design.widget.NavigationView 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2436) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2495) 
    at android.app.ActivityThread.access$900(ActivityThread.java:170) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1304) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:146) 
    at android.app.ActivityThread.main(ActivityThread.java:5635) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:515) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107) 
    at dalvik.system.NativeStart.main(Native Method) 
    Caused by: android.view.InflateException: Binary XML file line #22: Error inflating class android.support.design.widget.NavigationView 
    at android.view.LayoutInflater.createView(LayoutInflater.java:626) 
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:702) 
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:761) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:498) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:398) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:354) 
    at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) 
    at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
    at com.hsk.hallymexam.MainActivity.onCreate(MainActivity.java:42) 
    at android.app.Activity.performCreate(Activity.java:5580) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2400) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2495)  
    at android.app.ActivityThread.access$900(ActivityThread.java:170)  
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1304)  
    at android.os.Handler.dispatchMessage(Handler.java:102)  
    at android.os.Looper.loop(Looper.java:146)  
    at android.app.ActivityThread.main(ActivityThread.java:5635)  
    at java.lang.reflect.Method.invokeNative(Native Method)  
    at java.lang.reflect.Method.invoke(Method.java:515)  
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)  
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)  
    at dalvik.system.NativeStart.main(Native Method)  
    Caused by: java.lang.reflect.InvocationTargetException 
    at java.lang.reflect.Constructor.constructNative(Native Method) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
    at android.view.LayoutInflater.createView(LayoutInflater.java:600) 
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:702)  
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)  
    at android.view.LayoutInflater.inflate(LayoutInflater.java:498)  
    at android.view.LayoutInflater.inflate(LayoutInflater.java:398)  
    at android.view.LayoutInflater.inflate(LayoutInflater.java:354)  
    at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280)  
    at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)  
    at com.hsk.hallymexam.MainActivity.onCreate(MainActivity.java:42)  
    at android.app.Activity.performCreate(Activity.java:5580)  
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)  
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2400)  
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2495)  
    at android.app.ActivityThread.access$900(ActivityThread.java:170)  
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1304)  
    at android.os.Handler.dispatchMessage(Handler.java:102)  
    at android.os.Looper.loop(Looper.java:146)  
    at android.app.ActivityThread.main(ActivityThread.java:5635)  
    at java.lang.reflect.Method.invokeNative(Native Method)  
    at java.lang.reflect.Method.invoke(Method.java:515)  
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)  
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)  
    at dalvik.system.NativeStart.main(Native Method)  
    Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f020050 
    at android.content.res.Resources.getValue(Resources.java:2326) 
    at android.support.v7.widget.AppCompatDrawableManager.loadDrawableFromDelegates(AppCompatDrawableManager.java:321) 
    at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:197) 
    at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:192) 
    at android.support.v7.view.menu.MenuItemImpl.getIcon(MenuItemImpl.java:421) 
    at android.support.design.internal.NavigationMenuPresenter$NavigationMenuAdapter.prepareMenuItems(NavigationMenuPresenter.java:495) 
    at android.support.design.internal.NavigationMenuPresenter$NavigationMenuAdapter.update(NavigationMenuPresenter.java:436) 
    at android.support.design.internal.NavigationMenuPresenter.updateMenuView(NavigationMenuPresenter.java:112) 
    at android.support.design.widget.NavigationView.inflateMenu(NavigationView.java:245) 
    at android.support.design.widget.NavigationView.<init>(NavigationView.java:169) 
    at android.support.design.widget.NavigationView.<init>(NavigationView.java:95) 
    at java.lang.reflect.Constructor.constructNative(Native Method)  
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)  
    at android.view.LayoutInflater.createView(LayoutInflater.java:600)  
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:702)  
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)  
    at android.view.LayoutInflater.inflate(LayoutInflater.java:498)  
    at android.view.LayoutInflater.inflate(LayoutInflater.java:398)  
    at android.view.LayoutInflater.inflate(LayoutInflater.java:354)  
    at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280)  
    at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)  
    at com.hsk.hallymexam.MainActivity.onCreate(MainActivity.java:42)  
    at android.app.Activity.performCreate(Activity.java:5580)  
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)  
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2400)  
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2495)  
    at android.app.ActivityThread.access$900(ActivityThread.java:170)  
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1304)  
    at android.os.Handler.dispatchMessage(Handler.java:102)  
    at android.os.Looper.loop(Looper.java:146)  
    at android.app.ActivityThread.main(ActivityThread.java:5635)  
    at java.lang.reflect.Method.invokeNative(Native Method)  
    at java.lang.reflect.Method.invoke(Method.java:515)  
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)  
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)  
    at dalvik.system.NativeStart.main(Native Method) 

難道我做錯了什麼?

+0

你正在使用矢量drawables(xml文件)的圖標..好嗎? –

+0

你能澄清你的問題嗎?可能有多種原因。也許它關於你的設備運行的Android版本。矢量可繪製(如果您使用這些可繪製的)不直接支持舊版Android(但有支持庫)。此外,您聲明您將圖標放在21文件夾中,使其僅在API 21級設備上可用。你的設備是否在21級上運行? – Baschi

+0

@OnkarNene是的。 – Chris

回答

0

首先,其他人暗示不要」把你的圖標放在mipmap文件夾中。這是一個專門用於應用程序圖標的文件夾。將所有圖標放在可繪製的文件夾中。

其次,檢查你的drawable文件夾。如果您的圖標只放在繪製-V21那麼你有一個問題,因爲繪製-V21僅用於與API級設備> = 21,只是他們更換到繪製文件夾

第三,如果你使用矢量圖形並且想要支持具有api級別的設備< 21,則需要啓用支持矢量繪圖More info here

+0

謝謝...這是API級別的問題。太遺憾 – Chris

0

你需要把所有的抽屜圖標爲drawable-hdpidrawable-mdpidrawable-xhdpidrawable-xxhdpidrawable-xxxhdpi文件夾

+0

他正在使用矢量繪圖。 –

+0

@OnkarNene但我看到他說'我下載了導航抽屜項目的圖標' –

+0

最後他說「我只是將xml文件的圖標移動到drawable-v21文件夾中。」所以我認爲他正在使用矢量繪圖。 –

-1

我假設你使用過Android Studio IDE

1)如果您正在使用PNG/JPG圖標然後把你的圖標在各自的mipmap文件夾,即mipmap-hdpi,mipmap-xhdpi等&然後參考它@mipmap/YOUR_ICON_NAME

2)如果你正在使用XML(可繪製矢量)文件的圖標,然後把你的所有xml(矢量繪圖資源)文件drawable文件夾而不是drawable-v21然後引用它作爲@drawable/YOUR_XML_FILE_NAME

希望這將有助於:)

+0

http://stackoverflow.com/a/28065664/5471104, 這可能有助於限制mipmap文件夾對其他繪圖的使用。 –

0

有很多原因的異常:

  1. 圖標大小太大(像素) 解決方案:在導航抽屜等IC使用的所有可繪製的ons應該是最大的48 * 48像素大小。

  2. 不正確的引用可繪製 解決方案:首先複製圖像(後面的解決方案-1),然後在android studio中,將其粘貼到可繪製的根文件夾中。

  3. 不當支持SVG 解決方案:遵循this鏈接

您所有的XML繪項目應存放在可繪製根文件夾,而不是更好的效果大小特定的子文件夾。

如果您正在使用SVG文件,然後按照我上面提到的鏈接,XML文件複製到另一個API特定的文件夾直接只會增加您的問題