Экземпляр фрагмента каждый раз создается и перезагружается при повторном нажатии.
Как решить эту проблему?
Невозможность иметь правильный backstack в контроллере nav является огромной проблемой производительности.Надеюсь, что это отсутствующая функция или обходной путь, сделанный специально ... IMO, это необходимо, и должно быть введено раньше, чем позже (однако: https://issuetracker.google.com/issues/109856764 говорит Мы не будемразрешить настройку типа транзакции (например, скрытие / отображение и т. д.) в обозримом будущем. ): (
Nav-Framework хорош, но каждый раз создает представление фрагмента
У кого-нибудь есть решение?
Мой код предназначен для навигации с использованием Навигации
object NavigationHelper : Navigational {
override fun moveDownWithPop(view: View,id: Int,popStackId: Int) {
Navigation.findNavController(view).navigate(id,
null,
NavOptions.Builder()
.setPopUpTo(popStackId,
true).build()
)
}
override fun moveDownWithDataPop(view: View,id: Int,popStackId: Int,bundle : Bundle) {
Navigation.findNavController(view).navigate(id,
bundle,
NavOptions.Builder()
.setPopUpTo(popStackId,
true).build()
)
}
override fun moveUp(view: View) {
Navigation.findNavController(view).navigateUp()
}
override fun moveDown(view: View,id: Int) {
Navigation.findNavController(view).navigate(id)
}
override fun moveDown(view: View,id: Int,args : Bundle) {
Navigation.findNavController(view).navigate(id,args)
}
fun navigateGraph(graphId : Int,context : Context){
var finalHost: NavHostFragment? = NavHostFragment.create(graphId)
(context as MainActivity).supportFragmentManager.beginTransaction()
.replace(com.admision.R.id.content,finalHost!!)
.setPrimaryNavigationFragment(finalHost) // this is the equivalent to app:defaultNavHost="true"
.commit()
}
}
Я нашел какой-то блог Почему я не буду использовать компонент архитектуры навигации