android.view.InflateException: рядок файлу бінарного файлу XML №12: помилка накачування класу <невідомо>


147

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

перевірте це. Це мені допомагає! stackoverflow.com/questions/9480972/android-tablelayout-error
user1974235

Відповіді:


266

Виняток надуття насправді не є проблемою, але насправді виникає з іншого більш глибокого питання у вашій макеті, який потім загортається у InflateException. Поширена проблема - це виняток із пам'яті, коли намагаються надути перегляд зображення, завантажуючи ресурс, що виводиться. Якщо один з цих ресурсів має високу роздільну здатність пікселів, це займе багато пам’яті, що спричинить завищене виключення.

Тому в основному переконайтеся, що роздільна здатність пікселів у ваших зображеннях для малювання є лише мінімальним, необхідним для вашого макета.


4
@vnportnoy У мене також така ж помилка, коли я
видаляю

4
Я вважаю, що в моїй заяві немає жодної малюнки
Arturas M

3
Спробуйте перевірити мовний пакет, можливо, ресурс рядка відсутній. Це спричинило проблеми в моєму випадку.
Мухаммед Субхі Шейх Куроуш

Якщо ваша проблема з інструментальними випробуваннями, то спробуйте це: stackoverflow.com/q/24904445
Джеррі Destremps

Після вилучення перегляду зображень із мого xml все ще виникає помилка у classpath 'com.android.tools.build:gradle:3.0.0-alpha2' та компілюйте 'com.android.support.constraint: constraint-layout: 1.0.2'
Subho

24

ViewFlipperзавантажує всі зображення в пам'ять під час роздування макета. Оскільки мої зображення великі, він займає багато пам’яті, я замінив його ViewFlipperна ImageSwitcherякий можна змінювати зображення на зразок анімації, ViewFlipperале він завантажує лише одне зображення одночасно.


23

Це також може статися, якщо ви використовуєте VectorDrawableслужбу підтримки бібліотеки та забули використовувати її app:srcCompatзамістьandroid:src

Точна помилка: Бінарний файл XML-файлу #XX: Помилка завищення класу ImageView

Дивіться це посилання


Щойно ви активуєте це, ви завжди повинні використовувати додаток: srcCompat
Mohamed ALOUANE

Але це не призведе до випадкових збоїв.
Менна-Аллах Самі

11

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

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

11

Я знаю, що на питання вже відповіли, але все ж я розміщую думку, що хтось може зіткнутися з подібною проблемою.

У моєму випадку проблема полягає в тому, що я завантажую свою програму на телефон, який посилає макети з res / layout / folder і значення для @dimens з res / values ​​/ dimens. Це шрифт_22, до якого він намагається отримати доступ, і визначається в res / values-xlarge / зменшується.

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

Я зіткнувся з цією проблемою, оскільки я використовую IDE Eclipse, де я ctrl + простір для підказки, коли пишу xml для папки макета, він відображає всі значення зі значень, а також папку значень-xlarge незалежно від того, для якої папки я пишу.

Я також знаю, що значення в обох файлах повинні бути однаковими для відображення для різних екранів.

Сподіваюся, це може допомогти комусь зіткнутися з такою дурною проблемою.


9

Я зіткнувся з тією ж помилкою і виявив, що першопричиною є:

Використовуйте контекст програми для надування подання.

Надуття контексту діяльності виправляло помилку.


6

Розмір моєї картини становить лише 14 Кбіт, але проблема полягає в тому, що дизайнер дав мені 1011px x 1819px (занадто висока роздільна здатність, щоб викликати InflateException)


6

Якщо у когось виникають подібні проблеми, у мене виникло таке питання, надуваючи думку:

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

виправлено заміною getApplicationContext()наthis


5

У мене була ця помилка, оскільки я вибрав тему як Тема матеріалу. Але коли я намагався запустити додаток 4.4.2, це дало цю помилку.

Рішення: Виберіть Theme_holo як тему


Моя проблема може бути схожа на вашу, тому що я бачу аварію тільки на 4.2.2. Але де я можу змінити тему "Матеріал" на "Тема_холо"? Я не бачу ключового слова Матеріал у своєму styles.xmlабо v21/styles.xml. Дивіться моє запитання: stackoverflow.com/questions/37883677/…
Katedral Pillon

4

Це посилання може вам допомогти. Спробуйте перевірити у своєму маніфесті наявність проблем. Якщо ви зможете це повторитися, опублікуйте весь слід стека, щоб ми могли побачити, що насправді є помилкою.

EDIT: Я впевнений, що ви це перевірили, але що знаходиться у рядку 12 файлу XML, який ви використовуєте для макета TourActivity?


Я прочитав це питання. Це не моя справа (принаймні, я не бачу цього). Додавання стека до питання.
Солвек

Оновлена ​​відповідь, чи можете ви розмістити XML? Якщо ви не заперечуєте, опублікуйте весь XML, якщо він не надто великий.
Кевін Коппок

Додано XML до початкового
запитання

Хм, на жаль, у мене немає досвіду використання merge або ViewFlipper ... Чи всі файли XML, що це відбувається при використанні merge або ViewFlipper?
Кевін Коппок

Ні. Інші файли не мають злиття фліппера, але все ж виникають ті ж проблеми.
Солвек

4

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

(У повідомленні про помилку кота журналу він сказав, що помилка сталася під час надуття певного макета в моєму HomeFragment.java)

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

Дякую! Це допомогло мені знайти проблему!
Сергій Сташишин

4

Я виявив ту саму помилку, і для того, щоб визначити, яка помилка, знадобилося два дні.

Помилка була просто тому, що я намагався використовувати: 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 !
 />

Я рекомендую використовувати його таким чином

додайте це у додаток build.gradle

android {  
   defaultConfig {  
     vectorDrawables.useSupportLibrary = true  
    }  
 }

і

<androidx.appcompat.widget.AppCompatImageView  <-- use **AppCompatImageView** not **ImageView**
        android:scaleType="fitXY" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        app:srcCompat="@drawable/tour_11"
     />

Я сподіваюся, що це допомагає.


3

Я знаю, що це відповідь, але я не бачу причини, з якою я стикався.

Android Studio розмістив мої рисунки в / dravable-V24. Мій емулятор - API 23. Отже, врешті-решт його не знайти.

Рішення полягало в тому, щоб перемістити всі чернетки в папку / Dravable (ні -24).


У мене теж був випадок.
Рафаель


2

У мене була така ж помилка, і я вирішив перемістити свої малюнки з папки dravable-mdpi в папку, що малюється. Мені знадобилося трохи часу, щоб зрозуміти, тому що в Eclipse все працювало чудово, тоді як в Android Studio я отримав ці потворні помилки під час виконання.

Редагувати примітку: Якщо ви переходите від затемнення до Android Studio і ваш проект походить від затемнення, це може статися, тому будьте обережні, що в Android Studio речі трохи відрізняються від затемнення.


2

У моєму випадку ця помилка трапляється, коли я використовую кнопку " Плаваюча дія" та встановлюю android:backgroundTint="#000". Тоді просто не встановлюйте backgroundTintі проблему не вирішуйте. Сподіваємось, це вам корисно.


Дякую, що справді була проблема в моєму випадку. Потрібно використовувати app:backgroundTintзамість android:backgroundTint.
Драго

2

Для мене моє питання полягало в тому, що я був

android:background="?attr/selectableItemBackground"

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


1

У мене ця проблема була саме зараз і мені вдалося з’ясувати, що це таке. Посилався на колір у моїх значеннях, що спричиняло проблеми. Так визначили це вручну, замість того, щоб використовувати один із пропозицій, що випадає. Потім він працював!


1

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

У мене була така ж проблема, і це було вирішено, видаливши dravable-v24 з (24) перед зображеннями в папці, що малюється, і замінивши їх звичайними малюнками.


1

Я знаю, що ця нитка стара, але все ж відповідаю на неї так, що ніхто більше не повинен проводити безсонні ночі.

Я переробляв старий проект, файли компонування якого містили атрибути жорсткого коду, такі як 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: Все працює добре.


1

Вирішили це, перемістивши всі мої елементи, що малюються, з dravable-v24 на Dravable


0

Я також зіткнувся з подібним питанням. Хоча для когось це може бути проблемою різних поганих звичок у Кодексі, таких як

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

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

Я вирішив свою проблему з контекстом BAD (використовуючи ApplicationContext замість діяльності протягом 4 днів! Тож спробуйте, якщо це вирішить. Щасливе кодування !!


0

Я зіткнувся з тією ж проблемою, я використав тег view у xml замість View. Заміна класу Перегляд виправила проблему.

Сподіваюсь, це теж допоможе вам.


0

Нам потрібно перевірити версію 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

У моєму випадку я повинен вказати повну назву пакета компонента інтерфейсу бібліотеки, який я використовую у своєму файлі компонування.


0

Для мене це сталося, тому що я намагався змішати графічні зображення XML із звичайними PNG у тому самому файлі макета,

лише після того, як я замінив векторну графіку xml на png, вона почала працювати


0
  • Я просто вирішую цю проблему, просто видаляю ваші зображення з dravable (v24) і просто вставляю їх у папку, що малюється, це працює для мене.


0

У мене була така ж помилка у Crashlyticsдивного пристрою: Motorola One Vision Android 5.1 та 20 ГБ (безкоштовно) оперативної пам’яті, вкорінене Цей пристрій спочатку має Android 9.0, 4 Гб оперативної пам’яті

Можливо, хтось намагається зламати додаток, який я зараз розробляю, і у нього є проблеми з багатозавантажними APK. Таким чином, витратні матеріали не можна знайти, і додаток забезпечує збій

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.