2

У меня есть 4 фрагмента. Я переключаюсь между ними, используя операции hide/show. Один из них может иметь вложенные фрагменты, которые добавляются транзакцией replace. Проблема в том, что если я добавлю вложенный фрагмент скрыть основной фрагмент и снова его показать, то метод onHiddenChanged моего вложенного фрагмента не вызывается. Почему так? Как определить, когда мой вложенный фрагмент станет видимым?Жизненный цикл вложенных фрагментов

ответ

2

Я также столкнулся с проблемой, с которой вы сталкиваетесь.

Я обнаружил, что скрытие/показ родительского фрагмента не повлияло на видимые состояния дочерних фрагментов и не вызывало onHiddenChanged() и всегда возвращало бы isVisible() = true.

См. Мой answer в другом вопросе для моего обходного пути.

В основном я создал свою собственную функцию getIsVisible() на BaseFragment, которая рекурсивно просматривает всех родителей, чтобы найти ее фактическое видимое состояние. Я уверен, что вы можете сделать что-то подобное с onHiddenChanged(), распространив его на все дочерние фрагменты.

Я знаю, что это старый, но, возможно, кто-то мог бы извлечь выгоду из этого знания :)

-2

Для внутренних фрагментов используйте getChildFragmentManager().


+5

И где ответ здесь? – Lingviston

Смежные вопросы