@Koshkasobaka

Как правильно создать фабрику для фрагментов?

object MyFragment : Fragment() {

fun newInstance(args: Bundle): MyFragment {
val myFragment = MyFragment
myFragment.arguments = args
return myFragment
}
}

Правильно ли я создаю класс для создания фрагментов? И как его вызывать из MainActivity? Может быть у вас есть пример подобного кода, покажите пожалуйста
  • Вопрос задан
  • 133 просмотра
Решения вопроса 1
zagayevskiy
@zagayevskiy Куратор тега Android
Android developer at Yandex
Нет, всё неверно, начиная от того, что у тебя фрагмент, внезапно - синглтон. И заканчивая бандлом в аргументах.
сlass MyFragment : Fragment() {
    companion object {
        private arg1Key = "arg1Key"
        .... 
        fun newInstance(arg1: Int, arg2: String arg3: Parcelable, .....) = MyFragment().apply {
            arguments = Bundle().apply {
                  putInt(arg1Key, arg1)
                  putString...
                  putParcelable.....
            }
        }
    }
}

Как-то так, если делать руками. Также можно использовать библиотеки типа FragmentArgs.
И ещё в котлине есть механизм property delegation, на основе него можно по-быстрому напилить красоту. Вроде даже Navigation Component это использует.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы