it-swarm.com.ru

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>
123
Solvek

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

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

243
vnportnoy

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

24
Solvek

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

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

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

18
lujop

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

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

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

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

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

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

9
MobileEvangelist

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

   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();
    }
7
Wildan Muhlis

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

5
Han Heong Ho

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

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

4
Lakhwinder Singh Dhillon

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

Правка: Я уверен, что вы это проверили, но что в строке 12 файла XML вы используете для макета TourActivity?

4
kcoppock

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

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

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

4
cox

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

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

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

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

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

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

3
hedisam

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

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

2
Mark

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

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

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

1
alsaleem

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

1
Emre Aydemir

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

1
Luan Si Ho

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

1
Jonathan Laliberte

У меня была та же ошибка, когда я запустил свое приложение по 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>

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

1
Michał Powłoka

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

0
ghane nikraftar

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

Ошибка была просто потому, что я пытался использовать один: 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 !
 />

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

0
Williaan Lopes

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

0
christian mini

Нам нужно проверить версию 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}
0
Sam

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

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

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

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

0
sud007

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

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

0
Daniel

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

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

0
Kavya Shravan