Я использую библиотеку навигации, и мой вариант использования - сохранить состояние фрагмента при обратном нажатии, что достигается возвращением уже завышенной привязки в onViewCreated, так как при изменении фрагментов навигация, по-видимому, не разрушает уже существующий экземпляр этого фрагмента, когда переменная представления существует Вы перемещаетесь туда или обратно.
Но у меня также есть вариант использования, когда мне нужно воссоздать этот экземпляр Fragment, поэтому я ожидаю, что у меня будет возможность вызвать onDestroy () для этого фрагмента. Но я не вижу API для удаления / получения существующих в экземплярах backstack.
Так что мой вопрос , как получить существующий экземпляр фрагмента из стека навигации назад и уничтожить его или просто удалить, вызвав контроллер nav api .
некоторый код:
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
viewModel = ViewModelProviders.of(requireActivity(), mViewModelFactory)
.get(MainViewModel::class.java)
parseNavigationExtra()
return if (::mBinding.isInitialized) {
mBinding.root
} else {
//create new binding
}
, поэтому, когда я вызываю это действие, я все еще получаю старую привязку root, поскольку переменная все еще присутствует.
<action
android:id="@+id/clearBackStack"
app:destination="@+id/mainFragment"
app:launchSingleTop="true"
app:popUpTo="@+id/mobile_navigation"
app:popUpToInclusive="true" />