Ошибка раздувания фрагмента класса
Я получаю сообщение об ошибке
Когда я переключаюсь через портрет и ландшафтный режим. Я использую фрагменты. Мой xml:
Если я переключаюсь через пейзаж и портретный режим, все работает нормально. Но когда я нажимаю на свой фрагмент (и вижу мой фрагмент), а затем переключаюсь на другой режим, я получаю ошибку. Любая идея, как я могу это решить? Нашли здесь несколько ответов, но никто из них не помог мне …
Как сказал гдемирчян, обязательно используйте:
А также убедитесь, что активность, использующая фрагмент (ы), расширяет FragmentActivity вместо обычной Activity ,
Для получения класса FragmentActivity .
Исключение android.view.InflateException: Binary XML file line: #. Error inflating class fragment может произойти, если вы манипулируете с помощью getActivity() внутри вашего фрагмента до onActivityCreated() . В таком случае вы получаете неправильную ссылку на деятельность и не можете полагаться на нее.
Например, следующий шаблон неверен:
Правильный шаблон # 1
Правильный шаблон # 2
Убедитесь, что ваша Activity расширяет FragmentActivity .
У меня была такая же ошибка. Я копал весь день, не знаю, но я думаю, что я попробовал
25 решений по этой проблеме. Никто не работал, пока в 2AM я не узнал, что я пропустил эту строку в манифесте приложений xml:
У меня такая же проблема. Решением для меня был порядок super.onCreate и setContentView в FragmentActivity
Следующий порядок работает нормально:
У меня была такая же проблема, с которой вы столкнулись. Ни один из советов на вершине не помог мне. Позже я обнаружил, что все, что мне нужно было сделать, это исправить мои импорт из:
Убедитесь, что в методе onCreateView фрагмента нет исключений. Если в этом методе возникает какое-либо исключение, logcat не будет показывать точные сведения об исключении, вместо этого он всегда показывает сообщение:
Фрагменты не могут быть вложены в XML
Выучили этот трудный путь – если вы вставляете тег основе XML-макета внутри (потенциально) динамически загружаемого фрагмента из FragmentManager , то вы начинаете получать странные ошибки, пытаясь раздуть ваш фрагмент xml.
Оказывается, что это не поддерживается – он будет работать нормально, если вы сделаете это с помощью подхода FragmentManager .
Я получал эту проблему, потому что я пытался загрузить фрагмент внутри из xml, и это вызвало сбой в onCreateView() когда я вытащил задний стек.
Если ваш TaskDetailsFragment расширяет android.app.Fragment , измените значение onCreateView() .
Верните свой вид, который вы хотите показать во Фрагменте, или преобразуйте макет для просмотра с помощью LayoutInflater и верните его.
Надеюсь, это сработает. 🙂
Проверьте путь к классу, это может быть инфлятором представления, который не смог найти определение вашего класса, как определено в вашем классе xml = «de.androidbuch.activiti.task.TaskDetailsFragment», указанный выше путь может быть неправильным.
Для меня это было после прокрутки в трассе стека, я обнаружил, что у меня нет разрешения на android.permission.ACCESS_NETWORK_STATE
После добавления этого разрешения было исправлено
Если у вас есть отдельные файлы макета для портретных и ландшафтных режимов и вы получаете инфляционную ошибку, когда вы меняете ориентацию после нажатия на элемент, скорее всего, существует расхождение между вашими файлами макета.
Когда вы получаете сообщение об ошибке, это только когда вы нажимаете элемент в альбомном режиме или только в портретном режиме или на обоих? В вашей работе TaskDetailsFragment используется файл макета, который может иметь расхождения между ландшафтными и портретными режимами?
Я получал эту ошибку по разным причинам.
Действия по воспроизведению:
> Моя проблема заключалась в том, что я создал совершенно новое пустое приложение.
> Затем я создал пользовательский фрагмент из меню File
> Чтобы настроить фрагмент, добавив макеты и кнопки и т. Д.
> Ссылка на новый пользовательский фрагмент в автоматически сгенерированном файле activity_my.xml, который был создан для меня при создании приложения. Это позволило XML генерировать объекты для меня.
Heres – это улов при создании пользовательского фрагмента через File
> New File Menu, который автоматически генерирует заглушку функции интерфейса и помещает его в конец файла класса фрагмента.
Это означает, что ваш класс MyActivity должен реализовать этот интерфейс. Если это не так, указанная выше ошибка возникает только при ссылке на фрагмент из xml. Полностью удалив ссылку на фрагмент в XML и создав фрагмент через код в файле класса MyActivity.java, Logcat генерирует более сжатую ошибку, подробно объясняющую проблему и жалующуюся на интерфейс. Это показано в разделе «Шаблон проекта + фрагмент». Хотя
Имел такой же тип ошибки, где отображалось точно такое же сообщение об ошибке в logcat. Мне нужно было внести изменения в путь сборки Java, расположенный в Project->Properties . Я включил такие библиотеки Google Maps, как android-support-v4.jar и google-play-services.jar ; Однако я отсутствовал, включая их в ‘Build class path’ в меню опций ‘Order and Export’ . Может быть, ошибка здесь.
Попробуйте включить библиотеки в путь класса сборки.
Порядок, из которого создаются классы, также может вызвать ошибку, поэтому мой совет также должен попытаться изменить порядок пути построения. Ошибка исчезла, когда я использовал следующий порядок: ‘my_project_name/src’->’my_project_name/gen’->’Android Private Libraries’ . Последний блок содержит файлы jar, упомянутые ранее.
Моя проблема в этом случае была простым экземпляром исключения тупого нулевого указателя в одном из моих методов, который был вызван позже на жизненном цикле. Это вызывало для меня исключение «Ошибка раздувания класса». Короче говоря, не забудьте проверить дальнейшую работу по трассе стека исключений для возможной причины.
Как только я разрешил исключение нулевого указателя, мой фрагмент загрузился нормально.
Ни одно из упомянутых выше решений не помогло мне. В журнале я мог найти деталь исключения, как указано ниже:
Я сделал это, и мой код работал!
В вашем XML-файле просто используйте вместо тега. Надуватель пытается создать файл android.app.Fragment, из которого не будет выполняться API
Я получил эту ошибку при использовании ListFragment, но идентификатор списка был listView1 вместо списка.
«В вашем контенте должен быть ListView, атрибут id которого« android.R.id.list »
Просто такая же ошибка. Причиной моей была видимость моего класса фрагментов. Он был установлен на значение по умолчанию, должен быть общедоступным.
Не могли бы вы onCreateView методы onCreate и onCreateView ? У меня было точно такое же исключение, которое было вызвано исключением в методе onCreate , когда я исправил эту проблему, он исправил фрагмент класса раздувания Error.
Я получал эту ошибку в андроид-студии, проблема заключалась в том, что у моего фрагмента был относительный макет, а код в функции OnCreateView
Ваш код делает то же самое?
Если вы хотите наследовать AppCompatActivity , тогда вы можете сделать что-то вроде этого. В действии xml используйте FrameLayout,
И в деятельности onCreate –
Я получил ту же ошибку, но моя проблема заключалась в том, что у моего фрагмента не было идентификатора в макете xml родительской активности.
Если вы добавляете Fragment статически, то есть в xml, то вы, возможно, пропустили реализацию OnFragmentInteractionListener в своем классе Activity . Тогда реализация интерфейса решит проблему. Если вы добавляете Fragment динамически, то есть в класс java, это не решение. Поскольку сама IDE не позволит вам работать без реализации необходимых интерфейсов.
У меня была аналогичная проблема; После запуска примера AdMob я попытался вставить Объявления в свое приложение, вызвав эту ошибку:
Решение таково: вы не можете вставить фрагмент для объявления в ListActivity. Вместо этого я могу добавить его в FragmentActivity и в ActionBarActivity без каких-либо проблем.
Мое предложение: начать с примера AdMob и добавить в него свое существующее приложение: я бы сэкономил много времени .
Убедитесь, что вы использовали этот
Убедитесь, что ваша активность расширяет FragmentActivity или AppCompatActivity
Если ваш фрагмент является фрагментом списка, тогда действие, которое использует этот фрагмент, должно реализовать интерфейс onFragmentInteraction .
После того, как я добавил пустой конструктор, он будет разрешен.
Источник