#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. Приятно слышать! Если это помогло ответить на ваш вопрос, обязательно примите ответ, чтобы вопрос был удален из очереди вопросов без ответов