@Anrek

Как в cicerone объединить однотипные фрагменты?

Добрый день!

1) У меня есть группа одинаковых фрагментов, которые отличаются только выводимой картинкой и надписью и вызываются в разных местах приложения так:
Screens.ProfileOne
Screens.ProfileTwo

Я В object Screens они выглядят так:
object Screens {

object ProfileOne : SupportAppScreen() {
    override fun getFragment() = ProfileFragment(0)
  }

object ProfileTwo : SupportAppScreen() {
    override fun getFragment() =  ProfileFragment(1)
  }

}

Класс из которого во фрагменте на основании index берутся позиции в скобках (0 и 1):
enum class Items (@StringRes val title: Int, @DrawableRes val icon: Int) {

    One(R.string.one_profile, R.drawable.ic_profile_0),
    Two(R.string.two_profile, R.drawable.ic_profile_1),

Как сократить object Screens до 1 объекта? Потому что у меня их не 2, а 9 и это ужасно выглядит.

2) Я пробовал data class, но в итоге из-за того, что ScreenKey одинаковый, первый раз он работает, а второй раз выводит тот же самый экран. Т.е. объект не пересоздается. Выглядел код так:
object Screens {

data class Profilу (val index: Int) : SupportAppScreen() {
    override fun getFragment() = ProfileFragment(index)
  }

Вопрос: Как можно сократить object Screens? Или что поправить в моем варианте с непересоздающимися объектами? Буду очень благодарен за любые наводки.
  • Вопрос задан
  • 75 просмотров
Решения вопроса 1
@Anrek Автор вопроса
Решил так:
создавать вьюхи как compain object непосредственно при инициализации класса. А для навигации применять data class.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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