Ответ
Да, можно создать Fragment программно. Для этого нужно:
- Создать экземпляр фрагмента через конструктор:
val myFragment = MyFragment()
- Добавить его в активити/фрагмент через FragmentManager:
supportFragmentManager.beginTransaction()
.add(R.id.container, myFragment, "TAG")
.commit()
Ключевые моменты:
- У фрагмента должен быть пустой публичный конструктор (система восстанавливает его через reflection)
- Можно передавать аргументы через Bundle с помощью
setArguments() - Для замены/удаления используйте соответствующие методы FragmentTransaction
- Не забывайте про жизненный цикл и сохранение состояния
Пример с аргументами:
val fragment = MyFragment().apply {
arguments = bundleOf("key" to "value")
}