Android KitKat: android.view.InflateException: ошибка при раздувании класса android.support.design.widget.NavigationView

Ниже моя конфигурация. Это работает на Android Lollipop, но вылетает на Android Kitkat.

Я перепробовал здесь все обходные пути, но не могу помочь:
Ошибка надувания класс android.support.design.widget.NavigationView

build.gradle

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

defaultConfig {
    minSdkVersion 14
    targetSdkVersion 23

    // Support RenderScript Library v8
    renderscriptTargetApi 18
    renderscriptSupportModeEnabled true
}
}

ext{
    supportLibVersion = '23.1.1'
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile "com.android.support:appcompat-v7:${supportLibVersion}"
    compile "com.android.support:design:${supportLibVersion}"
    compile "com.android.support:cardview-v7:${supportLibVersion}"
    compile "com.android.support:recyclerview-v7:${supportLibVersion}"
}

Тема style.xml

<!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

    <style name="AppTheme.NoActionBar" parent="AppTheme">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>

Макет activity_main.xml

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

    <include
        layout="@layout/app_bar_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_logged_out_kp"
        app:itemTextColor="@color/textColorPrimary"
        app:menu="@menu/activity_drawer" />

</android.support.v4.widget.DrawerLayout>  

Деятельность oncreate()

setSupportActionBar(toolbar);

ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();

navigationView.setNavigationItemSelectedListener(this);
navHeaderView = navigationView.getHeaderView(0);  

Меню activity_drawer.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <group android:checkableBehavior="single">
        <item
            android:id="@+id/nav_kpv"
            android:icon="@drawable/ic_menu_person"
            android:title="@string/action_kpv" />
    </group>

    <item android:title="Communicate">
        <menu>
            <item
                android:id="@+id/nav_send"
                android:icon="@drawable/ic_menu_send"
                android:title="Send" />
        </menu>
    </item>

</menu>  

Вот ошибка, которую я получаю:

Caused by: android.view.InflateException: Binary XML file line #20: Error inflating class android.support.design.widget.NavigationView
                                                                          at android.view.LayoutInflater.createView(LayoutInflater.java:627)
                                                                          at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:703)
                                                                          at android.view.LayoutInflater.rInflate(LayoutInflater.java:762)
                                                                          at android.view.LayoutInflater.inflate(LayoutInflater.java:499)
                                                                          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:256)
                                                                          at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:109)
                                                                          at com.cammob.watershed.kp.ui.KPMainActivity.onCreate(KPMainActivity.java:68)
                                                                          at android.app.Activity.performCreate(Activity.java:5447)
                                                                          at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
                                                                          at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2393)
                                                                          at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2493) 
                                                                          at android.app.ActivityThread.access$800(ActivityThread.java:166) 
                                                                          at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283) 
                                                                          at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                          at android.os.Looper.loop(Looper.java:136) 
                                                                          at android.app.ActivityThread.main(ActivityThread.java:5584) 
                                                                          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:1268) 
                                                                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084) 
                                                                          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:601)
                                                                          at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:703) 
                                                                          at android.view.LayoutInflater.rInflate(LayoutInflater.java:762) 
                                                                          at android.view.LayoutInflater.inflate(LayoutInflater.java:499) 
                                                                          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:256) 
                                                                          at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:109) 
                                                                          at com.cammob.watershed.kp.ui.KPMainActivity.onCreate(KPMainActivity.java:68) 
                                                                          at android.app.Activity.performCreate(Activity.java:5447) 
                                                                          at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094) 
                                                                          at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2393) 
                                                                          at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2493) 
                                                                          at android.app.ActivityThread.access$800(ActivityThread.java:166) 
                                                                          at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283) 
                                                                          at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                          at android.os.Looper.loop(Looper.java:136) 
                                                                          at android.app.ActivityThread.main(ActivityThread.java:5584) 
                                                                          at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                          at java.lang.reflect.Method.invoke(Method.java:515)  

Обновление: заголовок NavigationView nav_header_logged_out_kp.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
             android:layout_width="match_parent"
             android:layout_height="@dimen/nav_header_height"
             android:theme="@style/ThemeOverlay.AppCompat.Dark"

    >
    <!--android:background="@drawable/side_nav_bar"-->

    <ImageView
        android:id="@+id/imageBackground"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="centerCrop"/>

    <Button
        android:id="@+id/buttonLogin"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="@string/login"/>

</FrameLayout>

comment
добавить nav_header_logged_out_kp в вопрос   -  person Dhaval Parmar    schedule 18.02.2016
comment
Я обновил. Смотрите мое обновление.   -  person maohieng    schedule 18.02.2016


Ответы (4)


Я нашел это. Ошибка исходит из меню навигации. Когда я создал новый проект с навигационным ящиком, Android Studio выполнила всю работу за меня. Существует папка с возможностью рисования с именем drawable-v21, в которой хранятся XML-файлы значков, например:

ic_menu_send.xml

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportHeight="24.0"
    android:viewportWidth="24.0">
    <path
        android:fillColor="#FF000000"
        android:pathData="M2.01,21L23,12 2.01,3 2,10l15,2 -15,2z" />
</vector>  

И это мое плохо. Я пропустил, чтобы поставить ic_menu_send.png для версии pre-lollipop.

person maohieng    schedule 18.02.2016
comment
Благодарю вас! У меня была такая же проблема - person Waran-; 27.02.2016
comment
мы должны заменить их изображениями и добавить версию png !! тогда почему шаблон работал на пред v-21,,, а теперь после некоторых дополнений не работает - person Basheer AL-MOMANI; 29.03.2016

Я использовал Activity Gallery в студии Android для создания navigation drawer activity

потом я заметил что шаблон added картинки в way той версии 21 и выше can understand, эти картинки для menu items в navigation view

и вот ошибка

Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f020052
......
......
android.support.design.internal.NavigationMenuPresenter$NavigationMenuAdapter.prepareMenuItems

и если вы проследили Resource ID #0x7f020052 в R файле

вы будете find принадлежать тому изображению, которое Android не распознал (нашел), потому что оно распознается Android v21, а не 19 или ниже

поэтому добавьте png изображений для Android-устройств до леденцов

person Basheer AL-MOMANI    schedule 29.03.2016

У меня похожая проблема. проведя много дней и тестируя, наконец, нашел проблему. это может быть исходит от одного из значков вашего пункта меню или из заголовка навигации.

проверили навигацию, удалив

app:headerLayout="@layout/nav_header_main"

app:menu="@menu/activity_main_drawer

эти две строки отдельно и проверьте монитор андроида на наличие ошибок

<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer"
/>

проверьте мою тему и ответьте. надеюсь, вы сможете исправить это из этого Ошибка раздувания с resourcenotfoundException

person Lakshitha Pradeep    schedule 17.10.2016
comment
Ты прав. Для меня это исправлено, когда я удаляю app:menu=@menu/drawer_menu, но мое приложение не показывает меню ящика - person Thanasis; 30.09.2018

Вариант 1. Убедитесь, что имена файлов совпадают: "@mipmap/icon.png" и "@mipmap/icon.xml"

Вариант 2: В окне отладки вы увидите идентификатор ресурса как: r-0X000fd что-то.... перейдите к R файл и проверьте этот ресурс, из-за которого генерируется ошибка....

Для этого: C:\Users\akshyata\Desktop\FoodSanta_Folders\FoodSanta\app\build\generated\source\r\debug\'your_package_name'\R.java

Откройте файл R в блокноте, нажмите «CTRL + F» и введите идентификатор ресурса. Вы найдете ресурс, вызвавший ошибку... ПОЙДИТЕ и устраните ошибку

Удачного кодирования

person Prajwal Waingankar    schedule 24.01.2019