Android: вызвано OnViewCreated, но фрагмент не виден
Итак, я снова продолжаю работать над своим динамическим пользовательским интерфейсом, и кажется, что я почти достиг точки, где должен прийти эффект успеха. Но теперь мои шаги стали меньше, и я медленно двигаюсь к рубежу.
Мы все еще говорим о полностью динамически создаваемом пользовательском интерфейсе, основанном на фрагменте менеджера и фрагментах, которые сами по себе заполнены некоторыми подэлементами, такими как текстовые представления, кнопки, столбцы таблицы, что угодно.
Согласно моему первоначальному замыслу, у меня есть класс контроллера, который является единственным и единственным экземпляром моего действия с фрагментами.
Конструктор контроллера получает ссылку на активность фрагмента, переданную в качестве аргумента, чтобы создать FragmentManager и хранить его глобально.
Контроллер создает объект пользовательского класса, который является производным от фрагмента.
Перегруженный конструктор вызывается правильно, вызывая базовый ctor и делая другие вещи.
Затем я добавляю объект в диспетчер фрагментов, который был создан в ctor контроллера с помощью пройденного действия, начиная транзакцию и фиксируя ее.
Контроллер оставлен, поток возвращается к mainacctivity, где я выдаю setcontentview в конце.
Тем не менее, onCreateView выполняется, oViewCreated выполняется, где я определяю макет моего и фоновый цвет и одну кнопку тестирования. Затем я аккуратно помещаю все вещи в интерфейс. Как было проверено с производным фрагментом в классе контроллера, это сработало. Но сейчас в более-менее реальной ситуации я не вижу фрагмента. После коммита в cotroller я также выдаю detach и прикрепляю снова для принудительного перерисовывания.
Полагаю, где-то мне придется пройти атомные ссылки. Это могло быть возможно?
THX заранее.
Редактировать: Решено.
Удалить это?
1 ответ
Я отвечаю на свой вопрос (возможно, у кого-то еще были подобные проблемы) и хотел бы знать, подходит ли мой подход:
переопределенный обработчик событий onCreateView просто должен возвращать новый View(getActivity());