3

Ниже приведена моя конфигурация. Это работает на Android Lollipop, но сбой на Android Kitkat.Android KitKat: android.view.InflateException: ошибка раздувания класса android.support.design.widget.NavigationView

Я попробовал все обходной путь здесь, но не может помочь:
Error inflating class 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> 

Layout 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) 

Update: заголовок 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> 
+0

Добавить nav_header_logged_out_kp в вопрос –

+0

Я обновил. См. Мое обновление. – maohieng

ответ

7

Я нашел его. Ошибка происходит из меню навигации. Когда я создал новый проект с навигационным ящиком, Android Studio создает для меня полную работу. Там в вытяжке папка с именем вытяжке-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 для версии до леллипопа.

+0

Спасибо! У меня была та же проблема –

+1

, если мы заменим их изображениями и добавим новую версию png! то почему шаблон работает на pre v-21 ,,, а теперь после некоторых дополнений не работает –

+0

, как вы положили эти чертежи для версий до леллипопа? – KOTIOS

2

Я 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 он принадлежит к этому образу, который андроид ничего не Распознать (найти), потому что он узнаваем по андроиду v21 не 19 или ниже

так добавить png изображений для предварительного леденца андроида устройств

0

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

проверили navigationview путем удаления

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" 
/> 

проверить мою нить и ответ. надеюсь, вы можете исправить это из этого Error Inflate with resourcenotfoundException