Чтобы сократить, я представлю вам абстрактную версию моей проблемы, поэтому у меня есть:
- 1 Activity, 1 main.xml с 1 FrameLayout в качестве контейнера (ID = main_container)
- Фрагмент A, B (A немного сложнее)
Я могу вставить любой фрагмент A или B в main_container без каких-либо проблем. Я также могу сделать какой-нибудь фрагмент, заменив B, A, B, A (когда я делаю последний обмен, он терпит неудачу!) Или A, B, A (снова это терпит неудачу на последнем)
Чтобы дать вам представление о моих навыках работы с Android, я всегда делаю:
FragmentX newX = FragmentX.newInstance(..);
FragmentTransaction ft ..
ft.replace(R.id.main_container, newX);
//ft.addToBackStack(null);
ft.commit();
Итак, ошибка, которую я получаю:
"E/AndroidRuntime(2559): android.view.InflateException: Binary XML file line #7: Error inflating class fragment
...
E/AndroidRuntime(2559): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:664)"
Что-то не так с этим подходом? Вам нужно перерабатывать фрагменты, потому что, как вы видите, я всегда использую статический метод newInstance ()? Или вы думаете, проблема в другом?
==== ОБНОВЛЕНИЕ ====
Оказывается, моя ситуация была такой:
фрагмент A (сложный :)) раздул фрагмент_A.xml, который содержал внутри 2 тега фрагмента, для которых я определил 2 класса фрагмента ..
В любом случае я сделал модификацию, удалив 2 тега фрагмента из фрагмента _A.xml и используя 2 тега include ... и используя только один большой класс фрагмента: (.
И теперь это работает просто отлично, но, на мой взгляд, предыдущая форма работала хорошо.