Size: a a a

Cicerone Chat (RUS)

2019 May 23

AM

Android Mobilovich in Cicerone Chat (RUS)
Pavel Antoshkin
Всем привет.
У меня следующая ситуация.
Сингл-активити, и всё на фрагментах. Перехожу с fragment_1 во fragment_2, потом поворачиваю экран и оказываюсь снова на fragment_1.
В чем может быть дело? Стек экранов не сохраняется?
Использую версию 5.0.0
Можно фрагмент кода (можно весь метод), где вы добавляете fragment_1?
источник

AM

Android Mobilovich in Cicerone Chat (RUS)
@terrakok, скажите, есть какие-то проблемы с мержом этого реквеста?
https://github.com/terrakok/Cicerone/pull/101
источник

PA

Pavel Antoshkin in Cicerone Chat (RUS)
Android Mobilovich
Можно фрагмент кода (можно весь метод), где вы добавляете fragment_1?
listsAdapter = ListsAdapter(
     onItemClick = {
          router.navigateTo(Screens.ToDosScreen(it))
     },
     onItemDelete = { id, name ->
          viewModel.deleteItem(id)
           showSnackBar(name)
     }
)
источник

AM

Android Mobilovich in Cicerone Chat (RUS)
ToDosScreen - это fragment_1?
источник

PA

Pavel Antoshkin in Cicerone Chat (RUS)
да
источник

PA

Pavel Antoshkin in Cicerone Chat (RUS)
5.0.0 на Скринах же
источник

PA

Pavel Antoshkin in Cicerone Chat (RUS)
Android Mobilovich
ToDosScreen - это fragment_1?
class ToDosScreen(private val list: ListModel) : SupportAppScreen() {
       override fun getFragment(): Fragment = ToDoView().newInstance(list)

       override fun getScreenKey(): String = "toDos view screen"
}
источник

AM

Android Mobilovich in Cicerone Chat (RUS)
Я про соответствие аллиасам, которые в предыдущем сообщении, всё ок.

Стек фрагментов должен сохраняться, с этим проблем в библиотеке нет. Нужно смотреть, где вы закрываете fragment_2, либо может есть ещё неочевидные операции на роутере
источник

PA

Pavel Antoshkin in Cicerone Chat (RUS)
Android Mobilovich
Я про соответствие аллиасам, которые в предыдущем сообщении, всё ок.

Стек фрагментов должен сохраняться, с этим проблем в библиотеке нет. Нужно смотреть, где вы закрываете fragment_2, либо может есть ещё неочевидные операции на роутере
Мне кажется, что дело в навигаторе. Он при повороте пересоздается. А новый навигатор - это новый стек.
источник

AM

Android Mobilovich in Cicerone Chat (RUS)
Новый стек чего? Навигатор постоянно копирует состояние бекстека фрагмент менеджера. Вы не писали собственный навигатор?
источник

PA

Pavel Antoshkin in Cicerone Chat (RUS)
Android Mobilovich
Я про соответствие аллиасам, которые в предыдущем сообщении, всё ок.

Стек фрагментов должен сохраняться, с этим проблем в библиотеке нет. Нужно смотреть, где вы закрываете fragment_2, либо может есть ещё неочевидные операции на роутере
на Активити у меня переопредлена onBackPressed() со следующей строкой: router.exit()
источник

PA

Pavel Antoshkin in Cicerone Chat (RUS)
Android Mobilovich
Новый стек чего? Навигатор постоянно копирует состояние бекстека фрагмент менеджера. Вы не писали собственный навигатор?
нет, я использую SupportAppNavigator
источник

AK

Aleksei Korshun in Cicerone Chat (RUS)
Покажите онкриэйт активити
источник

PA

Pavel Antoshkin in Cicerone Chat (RUS)
Aleksei Korshun
Покажите онкриэйт активити
override fun onCreate(savedInstanceState: Bundle?) {
     super.onCreate(savedInstanceState)
     setContentView(R.layout.activity_main)
     router.navigateTo(Screens.ListsScreen())
}
источник

AM

Android Mobilovich in Cicerone Chat (RUS)
-_-
источник

AK

Aleksei Korshun in Cicerone Chat (RUS)
Вот и проблема
источник

AM

Android Mobilovich in Cicerone Chat (RUS)
Я об этом сразу подумал, но тогда я не понимаю, как после поворота открывается ToDosScreen
источник

PA

Pavel Antoshkin in Cicerone Chat (RUS)
Android Mobilovich
Я об этом сразу подумал, но тогда я не понимаю, как после поворота открывается ToDosScreen
в этом и был вопрос
источник

AM

Android Mobilovich in Cicerone Chat (RUS)
Pavel Antoshkin
override fun onCreate(savedInstanceState: Bundle?) {
     super.onCreate(savedInstanceState)
     setContentView(R.layout.activity_main)
     router.navigateTo(Screens.ListsScreen())
}
Каждый раз при повороте будет открываться ListsScreen
источник

AM

Android Mobilovich in Cicerone Chat (RUS)
нужно проверять if (savedInstanceState == null)
источник