Пустой пользовательский интерфейс после добавления дочернего фрагмента в FragmentContainerView.Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Пустой пользовательский интерфейс после добавления дочернего фрагмента в FragmentContainerView.

Сообщение Anonymous »

Мне действительно нужна помощь с проблемой, с которой я застрял в течение некоторого времени. Я присоединился к своей компании пару месяцев назад. После переноса приложения для Android я столкнулся со многими проблемами (в основном из-за необходимости замены или обновления кода).
Одна из тех проблем, с которыми я недавно столкнулся, – использование FragmentContainerView. В прошлом проект был очень запутанным, и теперь цель — оптимизировать и улучшить его производительность. И это начинается здесь.
У меня есть один MainActivity для моего проекта. Это начальная активность. И тогда у меня будет еще один фрагмент, который будет добавлен в FragmentContainerView действия. И затем внутри этого первого дочернего фрагмента у меня будет макет вкладки, в который затем будет добавлен еще один дочерний фрагмент.
Это внутри основного действия: Когда основное действие загружается в первый раз, внутри onCreate() у меня будет функция, которая добавит домашний экран, под названием initHomeFragment(). У этого нет проблем. Я просто делюсь этим для большего контекста проблемы, с которой я столкнулся.
Когда я пытаюсь добавить следующий фрагмент (запускаемый нажатием кнопки), происходит очень интересное что-то произошло (после неоднократных наблюдений):
  • (режим отладки) Когда я запускаю приложение в режиме отладки, последующий дочерний фрагмент (фрагмент с дочернее представление) загрузится.
  • (Нормальный режим) Когда я прекращаю отладку и запускаю приложение в обычном режиме «Выполнить», дочерний фрагмент больше не будет загружаться. У меня просто пустой экран. Я даже пытался создать функцию для вызова в конце загрузки фрагмента, связанного с вкладкой. FragmentContainerView покажет, что есть 2 дочерних элемента. И это правильно, поскольку теперь в контейнер добавлены фрагменты «Домой» и «Избранное».

Код: Выделить всё

private void switchFragmentView(Fragment pShowFragment, Fragment pHideFragment, Bundle args, String tag) {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.setReorderingAllowed(true);
if (pHideFragment != null) {
ft.hide(pHideFragment);
}

if (getSupportFragmentManager().findFragmentByTag(tag) == null) {
if (pShowFragment instanceof MxFavouritesFragment)
ft.add(R.id.mxb_fragment_container, MxFavouritesFragment.class, args, tag);
} else {
ft.show(pShowFragment);
}

ft.commit();
}
Внутри MxFavouritesFragment...

Код: Выделить всё

getChildFragmentManager()
.beginTransaction()
.replace(R.id.mxb_fav_main_container, RecentFavouritesFragment.class, null, RecentFavouritesFragment.LOG_TAG)
.commit();
Внутри MxFavouritesFragment я использую FrameLayout вместо FragmentContainerView. Я пробовал использовать здесь то же представление контейнера, но оно тоже не сработало.
Что я могу сделать, чтобы гарантировать, что пользовательские интерфейсы загружаются правильно и не появляется пустое окно? screen?
Я воспользовался некоторыми онлайн-советами по использованию функций validate() или requestLayout(), которые должны заставить контейнер перерисовываться. Но по какой-то причине он ничего не делает (насколько я могу судить).

Подробнее здесь: https://stackoverflow.com/questions/791 ... tainerview
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»