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

Я получаю много ошибок, отображаемых в 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>

Ответы [ 24 ]

253 голосов
/ 21 апреля 2014

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

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

24 голосов
/ 01 марта 2011

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

19 голосов
/ 09 июня 2016

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

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

См. ссылку

11 голосов
/ 02 апреля 2013

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

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

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

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

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

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

8 голосов
/ 21 февраля 2017

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

   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();
    }
5 голосов
/ 11 мая 2015

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

4 голосов
/ 03 ноября 2015

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

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

4 голосов
/ 09 сентября 2015

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

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

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

4 голосов
/ 22 декабря 2010

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

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

3 голосов
/ 09 октября 2017

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

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

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