更改导航抽屉项目的图标后,应用程序已经死亡

时间:2016-07-06 07:37:42

标签: android navigation-drawer

我在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)

我做错了吗?

4 个答案:

答案 0 :(得分:0)

您需要将所有抽屉图标放入drawable-hdpidrawable-mdpidrawable-xhdpi drawable-xxhdpidrawable-xxxhdpi文件夹

答案 1 :(得分:0)

此例外的原因有很多:

  1. 图标尺寸太大(以像素为单位) 解决方案:导航抽屉和其他图标中使用的所有绘图应最多为48 * 48像素大小。

  2. 对drawable的不正确引用 解决方案:首先复制图像(在solution-1之后)然后在android studio中将其粘贴到drawable根文件夹中。

  3. SVG支持不当 解决方案:按照this链接

  4.   

    所有XML drawable都应该存储在drawables根文件夹中,而不是存储在特定于大小的子文件夹中,以获得更好的结果。

         

    如果您使用的是SVG文件,请按照我上面提到的链接,将XML文件直接复制到另一个API特定文件夹只会增加您的问题

答案 2 :(得分:0)

首先,正如其他人建议不要将您的图标放在mipmap 文件夹中。它是仅适用于应用程序图标的特定文件夹。将所有图标放在可绘制文件夹中。

其次,检查您的drawable文件夹。如果您的图标只放在 drawable-v21 中,那么您就会遇到问题,因为 drawable-v21 仅用于api级别为&gt; = 21的设备。只需将它们替换为< strong> drawable 文件夹

第三,如果您使用矢量图形并希望支持api级别&lt; 21,您需要启用支持矢量绘图More info here

答案 3 :(得分:-1)

我假设您使用的是Android Studio IDE

1)如果您使用 png / jpg 图标,则将图标放在相应的mipmap文件夹中,即mipmap-hdpimipmap-xhdpi等。&amp;然后将其引用为@mipmap/YOUR_ICON_NAME

2)如果您使用 XML(矢量绘图)文件作为图标,则将所有xml(矢量绘图)文件放在drawable文件夹而不是{{1然后将其引用为drawable-v21

希望它会有所帮助:)