Android: как отследить происхождение InflateException?
При запуске приложения я получаю следующее предупреждение в Logcat:
04-09 10:28:17.830: WARN/WindowManager(52): Exception when adding starting window
04-09 10:28:17.830: WARN/WindowManager(52): android.view.InflateException: Binary XML file line #24: Error inflating class <unknown>
04-09 10:28:17.830: WARN/WindowManager(52): at android.view.LayoutInflater.createView(LayoutInflater.java:513)
04-09 10:28:17.830: WARN/WindowManager(52): at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
04-09 10:28:17.830: WARN/WindowManager(52): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563)
04-09 10:28:17.830: WARN/WindowManager(52): at android.view.LayoutInflater.inflate(LayoutInflater.java:385)
04-09 10:28:17.830: WARN/WindowManager(52): at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
04-09 10:28:17.830: WARN/WindowManager(52): at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
04-09 10:28:17.830: WARN/WindowManager(52): at com.android.internal.policy.impl.PhoneWindow.generateLayout(PhoneWindow.java:2153)
04-09 10:28:17.830: WARN/WindowManager(52): at com.android.internal.policy.impl.PhoneWindow.installDecor(PhoneWindow.java:2207)
04-09 10:28:17.830: WARN/WindowManager(52): at com.android.internal.policy.impl.PhoneWindow.getDecorView(PhoneWindow.java:1395)
04-09 10:28:17.830: WARN/WindowManager(52): at com.android.internal.policy.impl.PhoneWindowManager.addStartingWindow(PhoneWindowManager.java:818)
04-09 10:28:17.830: WARN/WindowManager(52): at com.android.server.WindowManagerService$H.handleMessage(WindowManagerService.java:8794)
04-09 10:28:17.830: WARN/WindowManager(52): at android.os.Handler.dispatchMessage(Handler.java:99)
04-09 10:28:17.830: WARN/WindowManager(52): at android.os.Looper.loop(Looper.java:123)
04-09 10:28:17.830: WARN/WindowManager(52): at com.android.server.WindowManagerService$WMThread.run(WindowManagerService.java:531)
04-09 10:28:17.830: WARN/WindowManager(52): Caused by: java.lang.reflect.InvocationTargetException
04-09 10:28:17.830: WARN/WindowManager(52): at android.widget.FrameLayout.<init>(FrameLayout.java:79)
04-09 10:28:17.830: WARN/WindowManager(52): at java.lang.reflect.Constructor.constructNative(Native Method)
04-09 10:28:17.830: WARN/WindowManager(52): at java.lang.reflect.Constructor.newInstance(Constructor.java:446)
04-09 10:28:17.830: WARN/WindowManager(52): at android.view.LayoutInflater.createView(LayoutInflater.java:500)
04-09 10:28:17.830: WARN/WindowManager(52): ... 13 more
04-09 10:28:17.830: WARN/WindowManager(52): Caused by: android.content.res.Resources$NotFoundException: Resource is not a Drawable (color or path): TypedValue{t=0x2/d=0x1010059 a=-1}
04-09 10:28:17.830: WARN/WindowManager(52): at android.content.res.Resources.loadDrawable(Resources.java:1677)
04-09 10:28:17.830: WARN/WindowManager(52): at android.content.res.TypedArray.getDrawable(TypedArray.java:548)
04-09 10:28:17.830: WARN/WindowManager(52): at android.widget.FrameLayout.<init>(FrameLayout.java:91)
04-09 10:28:17.830: WARN/WindowManager(52): ... 17 more
Мое приложение запускается со следующим заставкой:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:windowBackground="@color/white" android:background="@color/white"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:foregroundGravity="center">
<ImageView android:id="@+id/ImageView01"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:adjustViewBounds="true" android:scaleType="centerInside"
android:src="@drawable/splash" android:layout_gravity="center" />
</ScrollView>
Всплеск - это изображение, отображаемое на заставке. У меня есть четыре папки для хранения рисованных объектов в моем приложении:
/ RES / вытяжка-ИПЧР
/ RES / вытяжка-ldpi
/ RES / вытяжка-MDPI
/ RES / вытяжка-nodpi
Заставка имеет свою собственную версию в первых трех из них и отображается правильно. Удаление свойства src из ImageView удаляет изображение, но не исключение.
Я немного заблудился, где искать причину исключения. Я даже не знаю, действительно ли это проблема в этом файле макета и т. Д.
Как бы вы нашли причину этого предупреждения?
7 ответов
У меня была точно такая же ошибка. Единственной xml-строкой 24, которая имела какой-либо смысл, был манифест моего приложения, который оказался закрывающим тегом для приложения. Я проследил это до своей пользовательской темы, которую я добавил для приложения - я не определял родителя стиля. Все, что мне нужно было сделать, это добавить parent="android:Theme" в мой стиль, и моя ошибка исчезла.
<style name="MyTheme" parent="android:Theme">
...
</style>
У меня была та же самая проблема, и это было, потому что я передал контекст приложения вместо контекста деятельности.
04-09 10:28:17.830: WARN/WindowManager(52): Caused by: android.content.res.Resources$NotFoundException: Resource is not a Drawable (color or path): TypedValue{t=0x2/d=0x1010059 a=-1
Эта линия - дешевая распродажа. Система недовольна одним из ваших ресурсов, вероятно, ресурсом 'src', возможно android:src="@drawable/splash"
,
Я получил похожую ошибку при работе на эмуляторе 2.0. Я использовал более новую версию API (версия 7, 2.1-update1), и она работала.
Я знаю, что это немного поздно, но я потратил весь день, пытаясь выяснить это, и, наконец, с помощью этого SO вопроса, я понял, что XML-файл в примере, который я пробовал, использовал функцию из более позднего API, и Lint был не уловил, потому что файл не изменился. Как только я произвел произвольное редактирование файла XML и сохранил файл, появилась ошибка более позднего API.
Ошибка в строке 24 вашего XML-файла. Что содержится в этой строке? Судя по сообщению об ошибке
android.view.InflateException: Binary XML file line #24: Error inflating class <unknown>
Вы используете пользовательский класс и не определили что-то правильно. Например, правильно ли вы определили имя пакета? Может быть, его конструктор не отформатирован? Нам нужно увидеть файл XML, в частности, что находится вокруг строки 24, чтобы иметь возможность дать больше информации.
После стольких напряженных исследований по поиску ответа, почему приложение аварийно завершает работу и почему не отображается logcat
Я только что заменил это
android:configChanges="orientation|keyboardHidden"
в
android:configChanges="keyboardHidden|orientation|screenSize"
в теге активности.