android.view.InflateException: строка двоичного XML-файла #12: ошибка надувания класса <unknown>

Я получаю много ошибок, отображаемых в Subj. Эти ошибки кажутся случайными, и я не могу их воспроизвести. Из стека я могу узнать, что такая ошибка может возникать для разных ресурсов моего макета. Линия XML также меняется.

Кто-нибудь может объяснить, почему происходит эта ошибка? И что я могу сделать, чтобы решить эту проблему?

стек

=============================================================

com.fsp.android.f generated the following exception:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.fsp.android.f/com.life360.android.ui.tour.TourActivity}: android.view.InflateException: Binary XML file line #12: Error inflating class <unknown>

--------- Stack trace ---------
1. android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2649)
2. android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2674)
3. android.app.ActivityThread.access$2200(ActivityThread.java:131)
4. android.app.ActivityThread$H.handleMessage(ActivityThread.java:1975)
5. android.os.Handler.dispatchMessage(Handler.java:99)
6. android.os.Looper.loop(Looper.java:123)
7. android.app.ActivityThread.main(ActivityThread.java:4702)
8. java.lang.reflect.Method.invokeNative(Native Method)
9. java.lang.reflect.Method.invoke(Method.java:521)
10. com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
11. com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
12. dalvik.system.NativeStart.main(Native Method)
-------------------------------

----------- Cause -----------
android.view.InflateException: Binary XML file line #12: Error inflating class <unknown>

1. android.view.LayoutInflater.createView(LayoutInflater.java:513)
2. com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
3. android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563)
4. android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
5. android.view.LayoutInflater.rInflate(LayoutInflater.java:621)
6. android.view.LayoutInflater.inflate(LayoutInflater.java:382)
7. android.view.LayoutInflater.inflate(LayoutInflater.java:320)
8. android.view.LayoutInflater.inflate(LayoutInflater.java:276)
9. com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:208)
10. android.app.Activity.setContentView(Activity.java:1629)
11. com.solvek.sample.ui.BaseActivity.onCreate(BaseActivity.java:23)
12. com.solvek.sample.ui.tour.TourActivity.onCreate(TourActivity.java:161)
13. android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
14. android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2587)
15. android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2674)
16. android.app.ActivityThread.access$2200(ActivityThread.java:131)
17. android.app.ActivityThread$H.handleMessage(ActivityThread.java:1975)
18. android.os.Handler.dispatchMessage(Handler.java:99)
19. android.os.Looper.loop(Looper.java:123)
20. android.app.ActivityThread.main(ActivityThread.java:4702)
21. java.lang.reflect.Method.invokeNative(Native Method)
22. java.lang.reflect.Method.invoke(Method.java:521)
23. com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
24. com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
25. dalvik.system.NativeStart.main(Native Method)
-----------------------------

-------- Environment --------
Time =2010-12-20 08:27:35 AM
Device =tmobile/htc_espresso/espresso/espresso:2.1-update1/ERE27/216830:user/release-keys
Make =HTC
Model =T-Mobile myTouch 3G Slide
Product =htc_espresso
App =com.fsp.android.f, version 2.0.9 (build 1232)

Вот результат XML, однако такая ошибка возникает в других xmls

<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
    <ViewFlipper android:layout_gravity="fill" android:id="@+id/flipper" android:layout_height="fill_parent" android:layout_width="fill_parent">
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_1"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_2"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_3"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_4"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_5"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_6"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_7"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_8"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_9"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_10"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_11"/>
    </ViewFlipper>

    <LinearLayout android:id="@+id/exit_bar" android:layout_gravity="top" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/blue_bar" android:visibility="invisible">
        <Button android:background="@drawable/orange_btn" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_gravity="center" android:textStyle="bold" android:textColor="#000000" android:shadowColor="#ffffff" android:shadowRadius="1.6" android:shadowDx="1.5" android:shadowDy="1.3" android:id="@+id/exit_tour_btn" android:text="Exit" android:layout_marginLeft="20dip"/>
        <TextView android:layout_height="wrap_content" android:textColor="#ffffff" android:layout_gravity="center" android:layout_width="110dip" android:layout_marginLeft="20dip" android:textSize="16dip" android:textStyle="bold" android:text="Life360 Tour"/>

    </LinearLayout>

    <Button style="@style/BlueBtn" android:text="Continue" android:layout_marginTop="40dip" android:id="@+id/continue_btn" android:visibility="gone" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_gravity="center" />

    <FrameLayout android:id="@+id/bottom_bar" android:layout_gravity="bottom" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/blue_bar" android:visibility="invisible">
        <ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/left" android:layout_gravity="left|center" android:background="@drawable/tour_left" android:layout_marginLeft="10dip"/>
        <ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/right" android:layout_gravity="right|center" android:background="@drawable/tour_right" android:layout_marginRight="10dip"/>               
    </FrameLayout>
</merge>

33 ответа

Решение

Исключение inflate на самом деле не является проблемой, но в действительности возникает из-за более глубокой проблемы в макете, которая затем включается в исключение InflateException. Распространенной проблемой является исключение нехватки памяти при попытке раздувать изображение, загружая извлекаемый ресурс. Если один из этих ресурсов имеет высокое разрешение в пикселях, потребуется много памяти, что приведет к исключению раздувания.

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

Это также может произойти, если вы используете VectorDrawable используя библиотеку поддержки и забыл использовать app:srcCompat вместо android:src

Точная ошибка: строка двоичного XML-файла #XX: ошибка надувания класса ImageView

Смотрите эту ссылку

ViewFlipper загружает все изображения в память во время раздувания макета. Поскольку мои изображения велики и занимают много памяти, я заменил ViewFlipper с ImageSwitcher который может изменить изображения с анимацией, как ViewFlipper но он загружает только одно изображение одновременно.

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

   public CustomWebView(Context context) {
        super(context);
        init();
    }

    public CustomWebView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public CustomWebView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init();
    }

Я обнаружил ту же ошибку, и потребовалось два дня, чтобы определить, что это за ошибка.

Ошибка была просто потому, что я пытался использовать один: android:background

Скорее, чем: app:srcCompat

в файле SVG.

В твоем случае я верю что это оно

<ImageView 
    android:scaleType="fitXY" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:src="@drawable/tour_11"      <-- the error is here !
 />

Надеюсь, это поможет.

Я столкнулся с той же ошибкой и нашел причину:

Используйте контекст приложения, чтобы раздуть представление.

Раздувание с помощью Activity Context исправило ошибку.

Я знаю, что на вопрос уже дан ответ, но все же я пишу с мыслью, что кто-то может столкнуться с такой проблемой.

В моем случае проблема заключается в том, что я загружаю свое приложение в телефон, который ссылается на макеты из res/layout/ folder и значения для @dimens из res/values ​​/ Dimensions, здесь это font_22, к которому он пытается получить доступ, и он определен в res/values-xlarge. / Dimens.

Я фактически обновляю пользовательский интерфейс существующего проекта.

Я столкнулся с этой проблемой, потому что я использую IDE Eclipse, где я использую Ctrl+ пробел для подсказки, при написании XML для папки макета, он отображает все значения из значений, а также папку values-xlarge независимо от того, для какой папки я пишу.

Я также знаю, что значения в обоих файлах должны быть одинаковыми для сопоставления для разных экранов.

Надеюсь, что это может помочь кому-то столкнуться с такой глупой проблемой.

В случае, если у кого-то возникают подобные проблемы, у меня была такая проблема, когда я раздувал представление:

View.inflate(getApplicationContext(), R.layout.my_layout, null)

исправлено заменой getApplicationContext() с this

Размер моего изображения составляет всего 14 КБ, но проблема в том, что дизайнер дал мне 1011px x 1819px (слишком высокое разрешение, поэтому возникает исключение InflateException)

У меня была эта ошибка, потому что я выбрал тему в качестве темы материала. Но так как я пытался запустить приложение на 4.4.2, оно выдало эту ошибку.

Решение: выберите Theme_holo в качестве темы

Для меня сообщения об ошибке на самом деле было недостаточно в журнале cat, поэтому вот что я сделал, чтобы выяснить, что вызвало проблему:

(В сообщении об ошибке журнала cat говорится, что ошибка произошла при накачке определенного макета в моем HomeFragment.java)

  1. Я поставил точку останова как раз перед тем, как макет был раздут
  2. Я запускал приложение в режиме отладки, пока оно не достигло этой конкретной точки останова
  3. Я выбрал строку курсором и побежал Evaluate expression в теме:
    • Run > Evaluate Expression или же alt - F8
  4. В результате я получил больше информации об источнике проблемы, который в моем случае представлял собой извлекаемый файл с использованием tools:targetApi="lollipop" (ошибка возникала только на старых устройствах).

Для меня моей проблемой было то, что я был

android:background="?attr/selectableItemBackground"

На фон LinearLayout, как только я его удалил, тест прошел.

Эта ссылка может вам помочь. Попробуйте проверить в своем манифесте проблемы. Если вы можете сделать это снова, опубликуйте всю трассировку стека, чтобы мы могли увидеть, что на самом деле является ошибкой.

РЕДАКТИРОВАТЬ: Я уверен, что вы это проверили, но что в строке 12 файла XML вы используете для макета TourActivity?

  • Я просто решаю эту проблему, просто удаляю ваши изображения из drawable(v24) и просто вставляю их в папку с возможностью рисования, это работает для меня.

Я знаю, что это ответ на вопрос, но я не вижу причины, с которой я столкнулся.

Дело в том, что Android Studio поместила мои drawables в /drawable-V24. Мой эмулятор - API 23. Так что, в конце концов, он не может его найти.

Решение состояло в том, чтобы переместить все элементы рисования в папку / drawable (без -24).

Вы должны скопировать файлы изображений из папки drawable-24 в папку drawable.

Решил это, переместив все мои элементы рисования из drawable-v24 в drawable

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

У меня была та же проблема, и она была решена путем удаления drawable-v24 с (24) перед изображениями в папке drawable и заменой их на обычные drawables.

У меня была та же ошибка, и я решил переместить мои файлы рисования из папки drawable-mdpi в папку drawable. Мне потребовалось некоторое время, чтобы понять, потому что в Eclipse все работало идеально, в то время как в Android Studio я получал эти ужасные ошибки времени выполнения.

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

В моем случае эта ошибка возникает, когда я использую кнопку действия Floating и устанавливаю android:backgroundTint="#000", Тогда просто не устанавливайте backgroundTint и проблема решена. Надеюсь, это полезно для вас.

Я знаю, что эта ветка старая, но все же отвечаю, чтобы никто другой не провел бессонные ночи.

Я проводил рефакторинг старого проекта, все файлы макета которого содержали жестко закодированные атрибуты, такие как android:maxLength = 500, Поэтому я решил зарегистрировать его в моемres/dimen подать как <dimen name="max_length">500</dimen>,

Закончен рефакторинг почти 30 файлов макетов с моим res-значением. Угадай, что? в следующий раз, когда я запустил свой проект, он начал бросать тот же InflateException,

В качестве решения нужно было повторить все изменения и сохранить все те же значения, что и раньше.

TLDR;

Шаг 1: Все работает хорошо.

шаг 2: для повышения моего обслуживания я заменил android:maxLength = 500 с участием <dimen name="max_length">500</dimen> а также android:maxLength = @dimen/max_length вот где все пошло не так (сбой с InflateException).

Шаг 3: Все плохо

Шаг 4: Повторно сделайте всю мою работу, снова заменив android:maxLength = @dimen/max_length с участием android:maxLength = 500.Все исправлено.

Шаг 5: Все работает хорошо.

У меня была та же ошибка, когда я запустил свое приложение по API lvl 16 (26 было в порядке). Это потому, что я использовал ?attrr/colorAccent в моей форме:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <corners android:radius="8dp" />

    <solid android:color="@attr/colorAccent" />

</shape>

Замена на обычный цвет исправила мою проблему.

В моем случае я должен указать полное имя пакета компонента библиотеки UI, которое я использую в своем файле макета.

просто переместите изображение или форму

  • drawable-v24 в папку с возможностью рисования

Раздуть Исключение:

      android.view.InflateException: Binary XML file line #32: Error inflating class androidx.appcompat.widget.SearchView
    at android.view.LayoutInflater.createView(LayoutInflater.java:633)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
    at androidx.databinding.DataBindingUtil.inflate(DataBindingUtil.java:126)
    at androidx.databinding.DataBindingUtil.inflate(DataBindingUtil.java:95)
    at com.foamkart.Fragment.SearchFragment.onCreateView(SearchFragment.kt:37)

Я столкнулся с той же проблемой, я использовал вид тега в XML вместо View. Замена на класс View устранила проблему.

Надеюсь, это поможет вам тоже..

Для меня это произошло потому, что я пытался смешать векторные изображения в формате xml с обычным png в одном файле макета,

только после того как я заменил векторную графику xml на pngs она начала работать

У меня была такая же ошибка в Crashlytics со странного устройства: Motorola One Vision Android 5.1 и 20 ГБ (бесплатно) ОЗУ, с рут-правами Это устройство изначально поставляется с Android 9.0, 4 ГБ ОЗУ

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

Я также столкнулся с подобной проблемой. В то время как для кого-то это может быть проблемой неправильного использования в Кодексе, таких как

  1. Неправильный тег Layout в XML
  2. Загрузка тяжелых ресурсов непосредственно в ImageView, что приводит к OOM
  3. Проблемы с использованием стилей.

Одним из наиболее игнорируемых факторов может быть использование правильного контекста при накачивании представлений. Пожалуйста, убедитесь, что вы не используете ApplicationContext, где требуется контекст Activity. Хотя ApplicationContext может не всегда заканчиваться ошибкой, но в зависимости от вашей иерархии представлений это может иметь решающее значение.

Я решил свою проблему с BAD-контекстом (используя ApplicationContext вместо Activity в течение 4 дней! Так что попробуйте, если это решится. Счастливого кодирования!!

Нам нужно проверить версию API. Я использовал, чтобы придать цвет фона моему LinearLayout лайк

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/as_royalblue"
        android:orientation="vertical"></LinearLayout>

наверняка у меня была такая же ошибка, as_royalblue.xml внутри drawable папка

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:angle="90"
        android:endColor="@color/royalblue_s"
        android:startColor="@color/royalblue_e" />
</shape>

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

fun checkAPI_N(): Boolean {
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N)
            return true
        else
            return false
    }

дать идентификатор вашим линейным макетам и установить фоны, если все в порядке

 if(UtilKotlin.checkAPI_N()){
            linlay_act_menu_container.setBackgroundResource(R.drawable.a_6)
            linlay_act_menu_logo.setBackgroundResource(R.drawable.as_strain)
        }else {//todo normal color background setting}
Другие вопросы по тегам