Приложение для тестирования компонентов архитектуры навигации отлично работает на телефоне Android 8.0.0, но не работает на Android 6.01

#android

#Android

Вопрос:

Приложение для тестирования компонентов архитектуры навигации отлично работает на телефоне Android 8.0.0, но не работает на Android 6.01.

android.просмотр.Исключение InflateException: строка двоичного XML-файла # 50: Строка двоичного XML-файла # 50: ошибка при раздувании класса com.google.android.material.navigation.NavigationView

Ошибка

      03-11 10:45:20.736 8441-8441/? E/Zygote: v2
  

03-11 10:45:20.736 8441-8441 / ? E / Zygote: accessInfo: 0
03-11 10:45: 21.216 8441-8441 /com.cyva.warrioriamv709 E / AndroidRuntime: ФАТАЛЬНОЕ ИСКЛЮЧЕНИЕ: основное
Процесс: com.cyva.warrioriamv709, PID: 8441
java.lang.RuntimeException: Не удается запустить activity ComponentInfo{com.cyva.warrioriamv709 /com.cyva.warrioriamv709.MainActivity}: android.view.Исключение InflateException: строка двоичного XML-файла # 50: Строка двоичного XML-файла # 50: ошибка при раздувании класса com.google.android.material.navigation.NavigationView
в android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3253)
в android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3349)
на android.app.ActivityThread.access $ 1100 (ActivityThread.java: 221)
в android.app.ActivityThread $H.handleMessage (ActivityThread.java: 1794)
в android.os.Handler.DispatchMessage (Handler.java: 102)
в android.os.Looper.loop (Looper.java: 158)
в android.app.ActivityThread.main (ActivityThread.java: 7225)
на java.lang.reflect.Метод.invoke (собственный метод)
в com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
на com.android.internal.os.ZygoteInit.main (ZygoteInit.java: 1120)
Вызвано: android.view.Исключение InflateException: строка двоичного XML-файла # 50: Строка двоичного XML-файла # 50: ошибка при раздувании класса com.google.android.material.navigation.NavigationView
на android.view.LayoutInflater.inflate (LayoutInflater.java: 551)
на android.view.LayoutInflater.inflate (LayoutInflater.java: 429)
на android.view.LayoutInflater.inflate (LayoutInflater.java: 380)
в androidx.appcompat.app.AppCompatDelegateImpl.setContentView (AppCompatDelegateImpl.java: 470)
в androidx.appcompat.app.AppCompatActivity.setContentView (AppCompatActivity.java:141)
на com.cyva.warrioriamv709.MainActivity.onCreate(MainActivity.kt:31)
в android.app.Activity.performCreate (Activity.java:6876)
в android.app.Instrumentation.callActivityOnCreate (Instrumentation.java: 1135)
в android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3206)
в android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3349)
на android.app.ActivityThread.access $ 1100 (ActivityThread.java: 221)
в android.app.ActivityThread $H.handleMessage (ActivityThread.java: 1794)
в android.os.Handler.DispatchMessage (Handler.java: 102)
в android.os.Looper.loop (Looper.java: 158)
в android.app.ActivityThread.main (ActivityThread.java: 7225)
на java.lang.reflect.Метод.invoke (собственный метод)
в com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
на com.android.internal.os.ZygoteInit.main (ZygoteInit.java: 1120)
Вызвано: android.view.Исключение InflateException: строка двоичного XML-файла # 50: ошибка при раздувании класса com.google.android.material.navigation.NavigationView
на android.view.LayoutInflater.CreateView (LayoutInflater.java: 657)
на android.view.LayoutInflater.createViewFromTag (LayoutInflater.java: 776)
на android.view.LayoutInflater.createViewFromTag (LayoutInflater.java: 716)
на android.view.LayoutInflater.rInflate (LayoutInflater.java: 847)
на android.view.LayoutInflater.rInflateChildren (LayoutInflater.java: 810)
на android.view.LayoutInflater.inflate (LayoutInflater.java: 527)
на android.view.LayoutInflater.inflate (LayoutInflater.java: 429)
на android.view.LayoutInflater.inflate (LayoutInflater.java: 380)
в androidx.appcompat.app.AppCompatDelegateImpl.setContentView (AppCompatDelegateImpl.java: 470)
в androidx.appcompat.app.AppCompatActivity.setContentView (AppCompatActivity.java:141)
на com.cyva.warrioriamv709.MainActivity.onCreate(MainActivity.kt:31)
в android.app.Activity.performCreate (Activity.java:6876)
в android.app.Instrumentation.callActivityOnCreate (Instrumentation.java: 1135)
в android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3206)
в android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3349)
на android.app.ActivityThread.access $ 1100 (ActivityThread.java: 221)
в android.app.ActivityThread $H.handleMessage (ActivityThread.java: 1794)
в android.os.Handler.DispatchMessage (Handler.java: 102)
в android.os.Looper.loop (Looper.java: 158)
в android.app.ActivityThread.main (ActivityThread.java: 7225)
на java.lang.reflect.Метод.invoke (собственный метод)
в com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
на com.android.internal.os.ZygoteInit.main (ZygoteInit.java: 1120)
Вызвано: java.lang.reflect.Исключение InvocationTargetException
на java.lang.reflect.Конструктор.newInstance (собственный метод)
на android.view.LayoutInflater.CreateView (LayoutInflater.java: 631)
на android.view.LayoutInflater.createViewFromTag (LayoutInflater.java: 776)
на android.view.LayoutInflater.createViewFromTag (LayoutInflater.java: 716)
на android.view.LayoutInflater.rInflate (LayoutInflater.java: 847)
на android.view.LayoutInflater.rInflateChildren (LayoutInflater.java: 810)
на android.view.LayoutInflater.inflate (LayoutInflater.java: 527)
на android.view.LayoutInflater.inflate (LayoutInflater.java: 429)
на android.view.LayoutInflater.inflate (LayoutInflater.java: 380)
в androidx.appcompat.app.AppCompatDelegateImpl.setContentView (AppCompatDelegateImpl.java: 470)
в androidx.appcompat.app.AppCompatActivity.setContentView (AppCompatActivity.java:141)
на com.cyva.warrioriamv709.MainActivity.onCreate(MainActivity.kt:31)
в android.app.Activity.performCreate (Activity.java:6876)
в android.app.Instrumentation.callActivityOnCreate (Instrumentation.java: 1135)
в android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3206)
в android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3349)
на android.app.ActivityThread.access $ 1100 (ActivityThread.java: 221)
в android.app.ActivityThread $H.handleMessage (ActivityThread.java: 1794)
в android.os.Handler.DispatchMessage (Handler.java: 102)
в android.os.Looper.loop (Looper.java: 158)
в android.app.ActivityThread.main (ActivityThread.java: 7225)
на java.lang.reflect.Метод.invoke (собственный метод)
в com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
на com.android.internal.os.ZygoteInit.main (ZygoteInit.java: 1120)
Вызвано: android.content.res.Resources $ NotFoundException: Идентификатор ресурса #0x7f070081
в android.content.res.Resources.GetValue (Ресурсы.java:2558)
в androidx.appcompat.widget.ResourceManager.loadDrawableFromDelegates (ResourceManager.java:251)
в androidx.appcompat.widget.ResourceManager.getDrawable (ResourceManager.java: 138)
в androidx.appcompat.widget.ResourceManager.getDrawable (ResourceManager.java:131)
в androidx.appcompat.widget.AppCompatDrawableManager.getDrawable (AppCompatDrawableManager.java: 400)
в androidx.appcompat.content.res.AppCompatResources.getDrawable (AppCompatResources.java: 102)
в androidx.appcompat.view.menu.MenuItemImpl.getIcon (MenuItemImpl.java: 505)
в com.google.android.material.internal.NavigationMenuPresenter$NavigationMenuAdapter.prepareMenuItems(NavigationMenuPresenter.java:535)
в com.google.android.material.internal.NavigationMenuPresenter$NavigationMenuAdapter.update(NavigationMenuPresenter.java:496)
в com.google.android.material.internal.NavigationMenuPresenter.updateMenuView(NavigationMenuPresenter.java:122)
на com.google.android.material.navigation.NavigationView.inflateMenu (NavigationView.java: 270)
на com.google.android.material.navigation.NavigationView.(NavigationView.java: 193)
на com.google.android.material.navigation.NavigationView.(NavigationView.java: 104)
на java.lang.reflect.Конструктор.newInstance (собственный метод)
на android.view.LayoutInflater.CreateView (LayoutInflater.java: 631)
на android.view.LayoutInflater.createViewFromTag (LayoutInflater.java: 776)
на android.view.LayoutInflater.createViewFromTag (LayoutInflater.java: 716)
на android.view.LayoutInflater.rInflate (LayoutInflater.java: 847)
на android.view.LayoutInflater.rInflateChildren (LayoutInflater.java: 810)
на android.view.LayoutInflater.inflate (LayoutInflater.java: 527)
на android.view.LayoutInflater.inflate (LayoutInflater.java: 429)
на android.view.LayoutInflater.inflate (LayoutInflater.java: 380)
в androidx.appcompat.app.AppCompatDelegateImpl.setContentView (AppCompatDelegateImpl.java: 470)
в androidx.appcompat.app.AppCompatActivity.setContentView (AppCompatActivity.java:141)
на com.cyva.warrioriamv709.MainActivity.onCreate(MainActivity.kt:31)
в android.app.Activity.performCreate (Activity.java:6876)
в android.app.Instrumentation.callActivityOnCreate (Instrumentation.java: 1135)
в android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3206)
в android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3349)
на android.app.ActivityThread.access $ 1100 (ActivityThread.java: 221)
в android.app.ActivityThread $H.handleMessage (ActivityThread.java: 1794)
в android.os.Handler.DispatchMessage (Handler.java: 102)
в android.os.Looper.loop (Looper.java: 158)
в android.app.ActivityThread.main (ActivityThread.java: 7225)
на java.lang.reflect.Метод.invoke (собственный метод)
в com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
на com.android.internal.os.ZygoteInit.main (ZygoteInit.java: 1120)

build.gradle module

Какие дополнительные детали нужны этой системе?

 apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com...."
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'androidx.appcompat:appcompat:1.1.0-alpha02'
    implementation 'com.google.android.material:material:1.1.0-alpha04'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    implementation 'androidx.core:core-ktx:1.1.0-alpha04'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'


    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
    implementation 'android.arch.navigation:navigation-fragment-ktx:1.0.0-rc02'
    implementation 'android.arch.navigation:navigation-ui-ktx:1.0.0-rc02'
    implementation 'android.arch.navigation:navigation-fragment:1.0.0-rc02'
    implementation 'android.arch.navigation:navigation-ui:1.0.0-rc02'

}


**build.gradle project**

buildscript {
    ext.kotlin_version = '1.3.21'
    repositories {
        google()
        jcenter()

    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.3.2'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0-rc02"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()

    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}


    **main_activity.xml excerpt: fails on line 50 -** 





50        <com.google.android.material.navigation.NavigationView
                    android:id="@ id/nav_view"
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:layout_gravity="start"
                    android:background="@android:color/white"
                    android:fitsSystemWindows="true"
                    android:isScrollContainer="true"
                    android:saveEnabled="true"
                    android:scrollY="1dp"
                    android:scrollbars="none"
                    app:headerLayout="@layout/nav_header_main_warrior"
                    app:elevation="2dp"
                    app:insetForeground="@color/colorPrimaryDark"
                    app:itemIconTint="@color/colorPrimaryDark"
                    app:menu="@menu/drawer_view"/>
  

Комментарии:

1. Как правило, появляется больше сообщений об ошибках. Можете ли вы включить всю трассировку стека и указать, какую тему вы используете для своей деятельности?

2. android: theme =»@style / AppTheme. Панель управления отключена»

3. <название стиля=»AppTheme. NoActionBar»> <имя элемента=»windowActionBar»> false</item> <имя элемента =»windowNoTitle»> true</item> < / style>

Ответ №1:

Эта часть сообщения об ошибке (последний раздел «Вызвано:»):

Вызвано: android.content.res.Resources $ NotFoundException: Идентификатор ресурса # 0x7f070081 в android.content.res.Resources.GetValue (Ресурсы.java: 2558) в androidx.appcompat.widget.ResourceManager.loadDrawableFromDelegates (ResourceManager.java: 251) в androidx.appcompat.widget.ResourceManager.getDrawable (ResourceManager.java: 138) в androidx.appcompat.widget.ResourceManager.getDrawable (ResourceManager.java: 131) в androidx.appcompat.widget.AppCompatDrawableManager.getDrawable (AppCompatDrawableManager.java: 400) в androidx.appcompat.content.res.AppCompatResources.getDrawable (AppCompatResources.java:102) в androidx.appcompat.view.menu.MenuItemImpl.getIcon (MenuItemImpl.java: 505) в com.google.android.material.internal.NavigationMenuPresenter$NavigationMenuAdapter.prepareMenuItems(NavigationMenuPresenter.java:535) в com.google.android.material.internal.NavigationMenuPresenter$NavigationMenuAdapter.update(NavigationMenuPresenter.java:496) в com.google.android.material.internal.NavigationMenuPresenter.updateMenuView(NavigationMenuPresenter.java:122 ) на com.google.android.material.navigation.NavigationView.inflateMenu (NavigationView.java: 270) на

Указывает на то, что это проблема с одним из значков в вашем NavigationView меню — в частности, он не может найти ресурс, который, как он ожидает, будет там. Это означает, что первое, что вы должны сделать, это убедиться, что ваш drawable присутствует не только в папке ресурсов конкретной версии (например, drawable-v23 ).

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

 android {
  defaultConfig {
    vectorDrawables.useSupportLibrary = true
  }
}
  

Комментарии:

1. Ян, спасибо. Отследил отсутствующие векторные изображения по их идентификаторам в R.java. Скопировано из папки drawable-v24 и помещено в папку drawable. Теперь работает нормально.

2. Приятно слышать! Если это помогло ответить на ваш вопрос, обязательно примите ответ, чтобы вопрос был удален из очереди вопросов без ответов