Фабрика фрагментов с диалоговыми фрагментами

#android #kotlin #fragment

Вопрос:

Можно ли создать экземпляр фрагмента диалога с помощью FragmentFactory ?

 baseActivity.fragmentFactoryImpl.title = title
val testFragment=
            baseActivity.supportFragmentManager.fragmentFactory.instantiate(
                baseActivity.classLoader, TestFragmentDialog::class.java.name
            ) as DialogFragment
 

Ответ №1:

Рекомендуем вам использовать навигационный компонент Jetpack

Простой способ манипулировать фрагментами и действиями между ними

Другой способ-создать класс MyDialogFragment и создать его экземпляр там, где это необходимо. Док здесь

Ответ №2:

Интерфейс FragmentFactory, используемый для управления созданием экземпляров фрагментов. Реализации могут быть зарегистрированы в FragmentManager через setFragmentFactory.

Полезно, если вы хотите инициализировать фрагмент с помощью пользовательского параметра.

Когда я смотрю на ваш код, вы не предоставляете вариант использования, который потребовал бы использования фабрики фрагментов.

Комментарии:

1. Я нашел это;Вы должны установить пользовательский FragmentFactory, если хотите использовать конструктор, отличный от конструктора по умолчанию, чтобы гарантировать, что ваш конструктор вызывается при повторном создании экземпляра фрагмента. developer.android.com/reference/androidx/fragment/app/…

2. Как я уже сказал, если вы передаете параметры, я предлагаю вам использовать его.

3. Я вижу,но основная проблема заключается в приведении его к фрагменту диалога, потому что fragmentfactory возвращает фрагмент, а не фрагмент диалога. Это правильный путь ?

4. Этот класс был устаревшим на уровне API 28. Используйте диалоговое окно библиотеки поддержки для согласованного поведения на всех устройствах и доступа к жизненному циклу. Фрагмент диалога также является фрагментом.