- java.lang.RuntimeException: Unable to start activity ComponentInfo
- java.lang.RuntimeException: Unable to start activity ComponentInfo
- Comments
- kogisin commented Dec 29, 2016 •
- Sumsar commented Jan 21, 2017
- takharvinod commented Dec 5, 2017
- codingjeremy commented Sep 19, 2019
- андроид.вид.InflateException: двоичный XML-файл: ошибка раздувания фрагмента класса
- 27 ответов
java.lang.RuntimeException: Unable to start activity ComponentInfo
android.view.InflateException: Binary XML file line #6: Binary XML file line #6: Error inflating class com.example.android.camera2basic.AutoFitTextureView #63
java.lang.RuntimeException: Unable to start activity ComponentInfo
Comments
kogisin commented Dec 29, 2016 •
I basically copied and pasted all the code that is provided in my Samsung Galaxy Note 5,
and i get the following error.
«java.lang.RuntimeException: Unable to start activity ComponentInfo
android.view.InflateException: Binary XML file line #6: Binary XML file line #6: Error inflating class com.example.android.camera2basic.AutoFitTextureView»
Do you have any idea how to fix it? i have been searching all day.
The text was updated successfully, but these errors were encountered:
Sumsar commented Jan 21, 2017
Check that the AutoFitTextureView tag in camera fragment xml is correct
takharvinod commented Dec 5, 2017
use in your fragment to change android=»com.horya.activity. »
i fix this error.
codingjeremy commented Sep 19, 2019
This sample has been migrated to a new location where we can accept Pull Requests (check README for more information).
As recommended by GitHub, we are closing all issues and pull requests now that this older repo will be archived.
If you still see this issue in the updated repo, please reopen the issue/PR there. Thank you!
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Источник
андроид.вид.InflateException: двоичный XML-файл: ошибка раздувания фрагмента класса
у меня очень неприятная ошибка, которую я не могу объяснить. Я создал приложение для Android, которое использует Android AppCompat чтобы сделать его совместимым со старыми версиями. Вот мой основной файл макета активности:
и вот основной код моей деятельности :
основная проблема здесь: выше код работает плавно на почти устройствах (стимулированное устройство или некоторые реальные устройства). Но когда я запускаю его на Samsung S3. Он замечает эту ошибку:
пожалуйста скажите мне, как исправить ошибку, спасибо:)
27 ответов
после долгого времени для отладки я исправил эту проблему. (Хотя я до сих пор не могу объяснить, почему). Что я меняю собственность android:name to class . (хотя в документе Android они говорят, что эти свойства одинаковы, но он работает . )
Итак, он должен измениться от:
Итак, новый макет должен быть :
надеюсь, что это поможет 🙂
Я не мог решить мою проблему, используя предоставленные ответы. Наконец, я изменил это:
и это работает.
Если вы используете его внутри фрагмента, используйте getChildFragmentManager вместо getSupportFragmentManager.
это может больше не понадобиться вам, но если дальнейшие читатели найдут это полезным. У меня точно такой же android.view.InflateException. Error inflating class fragment . У меня были все нужные библиотеки. Решено, добавив еще одно разрешение пользователя в AndroidManifest.xml файл, т. е.
кстати, я бежал Android Studio 0.8.9 on Ubuntu 12.04.
у меня была такая же проблема, проблема, попробовал все ответы в этой теме без толку. Мое решение, я просто не добавили ID в XML-активности. Я не думал, что это будет иметь значение, но это имело.
Итак, в XML активности у меня было:
Если кто-то будет рад прокомментировать, почему это, я все уши, другим, я надеюсь, что это поможет.
у меня такая же проблема, потому что я не выполнил слушатель. Увидеть следующий код /*Add This!*/ .
FYI, мой класс фрагментов примерно следующий:
Я также замечаю это же сообщение об ошибке при других обстоятельствах, когда есть исключение в
ваш NavigationDrawerFragment расширяет android.поддержка.В4.приложение.Фрагмент? Другими словами, вы импортируете правильный пакет?
у меня также была эта проблема. Я решил это, заменив импорт в MainActivity и NavigationDrawerFragment
я MainActivity предоставляет ActionBarActivity вместо активности
использовать ActionBar actionBar = getSupportActionBar(); чтобы получить ActionBar
и я обновил следующую функцию в NavigationDrawerFragment
TL / DR: исключение во время создания фрагмента ссылка из XML макета более высокого уровня. Это исключение привело к сбою инфляции макета более высокого уровня, но первоначальное исключение не было сообщено; в трассировке стека отображается только сбой инфляции более высокого уровня. Чтобы найти первопричину, вы должны поймать и зарегистрировать начальное исключение.
первопричина ошибки могут быть самыми разными, поэтому здесь так много разных ответов на вопрос, что именно решило проблему для каждого человека. Для некоторых, это было связано с id , class или name атрибуты. Для других это было связано с проблемой разрешений или настройкой сборки. Для меня это не решило проблему; вместо этого был привлекательный ресурс, который существовал только в drawable-ldrtl-xhdpi , а не в соответствующем месте, как drawable .
но это только детали. Этот проблема в том, что сообщение об ошибке, которое появляется в logcat, не описывает исключение, которое запустило все это. Когда XML-файл макета более высокого уровня ссылается на фрагмент, фрагмент onCreateView() называется. Когда исключение происходит в фрагменте onCreateView() (например, при раздувании XML-макета фрагмента) это приводит к сбою инфляции XML-макета более высокого уровня. Этот сбой инфляции более высокого уровня-это то, что сообщается как исключение в журналах ошибок. Но первоначальное исключение, похоже, не продвигается по цепочке достаточно хорошо, чтобы быть сообщенным.
учитывая эту ситуацию, вопрос заключается в том, как выставить начальное исключение, когда оно не отображается в журнале ошибок.
решение довольно простое: поместите try / catch блокировать содержимое фрагмента onCreateView() и в catch п., бревно за исключением:
это может быть не очевидно , который фрагмент класс onCreateView() чтобы сделать это, в этом случае сделайте это для каждого класса фрагментов, используемого в макете, который вызвал проблему. Например, в случае OP код приложения, в котором произошло исключение, был
поэтому вам нужно поймать исключения в onCreateView() любых фрагментов, указанных в макете activity_main .
в моем случае исключение первопричины оказалось
это исключение не появляются в журнале ошибок, пока я не поймал его в onCreateView() и зарегистрировал его явно. Как только он был зарегистрирован, проблема была достаточно проста для диагностики и исправления ( details_view.xml существовал только под ldrtl-xhdpi папке, по какой-то причине). Ключом было поймать исключение, которое было корнем проблемы, и разоблачить его.
это не помешает сделать это в качестве шаблона в все фрагменты’ onCreateView() методы. Если там есть необработанное исключение, это приведет к сбою активности не обращающий внимания. Единственное отличие заключается в том, что если вы поймаете и зарегистрируете исключение в onCreateView() , вы не будете в темноте, почему это произошло.
P. S. Я просто понял, что этот ответ имеет отношение к @DaveHubbard, но использует другой подход для нахождения первопричины (лесозаготовка и отладчик).
У меня были похожие проблемы. Сообщение об ошибке часто содержит очень мало деталей, независимо от фактической причины. Но я нашел способ получить больше полезной информации. Оказывается, что внутренний android-класс «LayoutInflater».java ‘ (в android.view package) имеет метод «inflate», который повторно создает исключение, но не подбирает детали, поэтому вы теряете информацию о причине.
я использовал AndroidStudio и установил точку останова на линии LayoutInflator 539 (в версии я working in), который является первой строкой блока catch для общего исключения в этом методе «inflate»:
Если вы посмотрите на » e «в отладчике, вы увидите поле «причина». Это может быть очень полезно, давая вам подсказку о том, что действительно произошло. Вот как, например, я обнаружил, что родитель включенного фрагмента должен иметь идентификатор, даже если он не используется в вашем коде. Или что у TextView была проблема с измерением.
на всякий случай, если кому-то это нужно. Предположения: телефон устройства подключен к USB-кабелю и чтение IDE для запуска приложение. Перейдите в командную строку, чтобы определить проблему: введите adb logcat
затем запустите приложение из IDE. Вы будете исключением.
в моем случае: я развертывал приложение Android версии 2.3 на мобильном устройстве что не поддерживает виджет «пробел»
эта проблема возникает, когда у вас есть пользовательский класс, который расширяет другой класс (В данном случае зрения), а не импортировать все конструкторы требуемого класса.
например: открытый класс CustomTextView расширяет TextView
этот класс будет иметь 4 конструктора, и если вы пропустите какой-либо из них, он рухнет. На самом деле я пропустил последний, который использовался Lollipop, добавил, что конструктор и работал нормально.
я столкнулась с этой проблемой и решил ее, используя следующие коды. Я начинал транзакцию фрагментов с помощью childfragment manager.
вот как я начал фрагмент транзакции:
В следующих кодах объясняется, как я удалил фрагмент, добавленный с помощью childfragmentmanger.
нам также необходимо добавить следующее в build.gradle (app)
всякий раз, когда мы используем новые макеты и новые конструктивные особенности. надеюсь, это поможет вам.
после того, как ни один из ответов здесь не помог мне, я решил запустить приложение в режиме отладки, перемещаясь по каждой строке onCreateView в моем фрагменте (NavigationDrawerFragment в вашем случае). И заметил, что фрагмент испытывал трудности с раздуванием из-за исключения NullPointerException. Е. Г.
здесь mySeekBar был установлен в null (потому что я пропустил добавление элемента управления в соответствующем макете), и следующая строка попала в NPE, который вышел как InflateException. Также, как предложено выше переименуйте android: имя в класс.
эта проблема может возникнуть по различным причинам, упомянутым выше. Я бы рекомендовал линейный поток отладки, чтобы знать, что не так.
Я не знаю, поможет ли это.
У меня была эта проблема с TextView, который у меня был в макете, который я пытался надуть (android.вид.InflateException: двоичная строка XML-файла #45: ошибка раздувания класса TextView).
Я установил следующий атрибут XML android: textSize=»?android: attr / textAppearanceLarge» что не позволяло раздуть макет.
Не знаю точно, почему, (Я все еще немного нового Android-менее года опыта работы), может быть, что-то связано с вызовом системных атрибутов, idk, все, что я знаю, как только я использовал простой старый @dimen / md_text_16sp (что обычай мой), проблема решена 🙂
надеюсь, что это помогает.
Я немного опоздал на вечеринку, но не из этих ответов помог мне в моем случае. Я использовал Google map как SupportMapFragment и PlaceAutocompleteFragment оба в моем фрагменте. Как все ответы указывали на то, что проблема с SupportMapFragment карту быть воссозданы и перерисовывается.
но у меня также была проблема с PlaceAutocompleteFragment. Так вот рабочее решение для тех, кто столкнулся с этой проблемой из-за SupportMapFragment и SupportMapFragment
и в onDestroyView очистить SupportMapFragment и SupportMapFragment
Я думаю, что основная проблема заключается в» android:targetSdkVersion», который определен в AndroidManifest.XML. В моем случае начальное значение, которое я определил как:
Я изменил его на:
, который разрешил все мои ошибки. Таким образом, настройка правильного «targetSdkVersion» также важна перед созданием приложения для android.
в случае, если кто-то еще сюда заходит и ответы не помогают решить проблему, еще одна вещь, чтобы попробовать.
Как упоминали другие, это обычно вызвано проблемой, вложенной в сам XML, в отличие от того, что вы сделали неправильно в своей Java. В моем случае это была очень простая (и глупая) ошибка.
У меня был такой код:
когда все, что мне нужно было сделать, это прописать v в «View», чтобы система его узнала. Проверьте, что ваш пользовательские представления (или фрагменты, recyclerviews и т. д.) имеют правильное объявление с заглавной буквы, чтобы автозаполнение XML соответствовало соответствующему представлению.
для некоторых из вас, которые до сих пор не нашли решения для этого, в моем случае это происходило, потому что у меня была проблема OOM (из памяти). Это может произойти, когда у вас есть, например, утечка памяти в вашем приложении при его использовании в течение длительного времени. В моем stack trace это было главной причиной.
у меня было это на устройстве 4.4.2, но 5+ был в порядке. Причина: внутри инициализации пользовательского представления я создавал TextView(Context context, AttributeSet attrs, @AttrRes int defStyleAttr, @StyleRes int defStyleRes) , который является API 21+.
Android Studio 2.1 не жалуется на это, хотя он аннотирован TargetApi(21) . По-видимому, Android Studio 2.2 исправит это и правильно покажет его как ошибку.
надеюсь, это кому-то поможет.
У меня тоже была эта ошибка, и после очень долгой отладки проблема заключалась в том, что моя расширенная активность MainClass вместо FrameActivity в моем случае xml не была проблемой. Надеюсь помочь вам.
как упоминалось в предыдущем посте,
переименовать
тем не менее, это не сработало для меня. Затем я просто использовал имя класса без com.фрагмент части и вуаля это сработало. Поэтому измените его, наконец, на
макет я пытался надуть было
тег, удалив его починил.
Я пытался надуть предыдущий макет, предназначенный для Actvity в адаптер view-pager.
моя ошибка была вызвана другой проблемой.
Я передавал пучок от действия к его фрагменту. Когда я прокомментировал код, получающий пакет во фрагменте, ошибка исчезла. Как оказалось, моя ошибка была связана с приведенной ниже частью» getArguments ();», которая возвращала null.
проверив код отправки активности, я понял, что у меня была глупая ошибка ниже;
Я создавал новый фрагмент в строке с стрелка. В то время как я должен был использовать предварительно созданный фрагмент, у которого уже был мой сверток. Так и должно было быть:—4—>
Я не знаю, почему именно он выдает эту ошибку вместо NPE, но это решило мою ошибку, если у кого-то есть тот же сценарий
У меня была та же проблема, в моем случае имя пакета было неправильным, исправление его решило проблему.
после долгого времени попыток, вот как я решил проблему после того, как ни один из вышеперечисленных ответов не мог.
- расширения AppCompatActivity для Main вместо Activity .
- добавить android:theme=»@style/Theme.AppCompat.Light» на на AndroidManifest.xml
в своем NavigationDrawerFragment класс, изменить свой ActionBar экземпляров
редактировать
это должно быть согласованностью между активность и планировка. Если планировка один из Тема AppCompat, такие как Theme.AppCompat.Light ваш активность должны extends AppCompatActivity .
я хотел иметь бургер и Панель Навигации это похоже на Android Gmail Приложение, но я закончил с уродливым Панель Навигации. Все это потому, что все мои классы extends Activity вместо AppCompatActivity .
я пересчитал весь проект, чтобы продлить AppCompatActivity , затем щелкните правой кнопкой мыши на Layout Folder выбрал new -> Activity затем Navigation Drawer Activity и бум, все сделано для меня!
Источник