#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. Используйте диалоговое окно библиотеки поддержки для согласованного поведения на всех устройствах и доступа к жизненному циклу. Фрагмент диалога также является фрагментом.