У меня есть пункт назначения, который предназначен для использования в качестве одной вершины. определяется как:
<fragment
android:id="@+id/secondaryPage"
android:name="SecondaryPageFragment"
android:label="SecondaryPage" >
<argument
android:name="pageId"
app:argType="integer" />
</fragment>
<action
android:id="@+id/action_global_secondaryPage"
app:destination="@id/secondaryPage"
app:launchSingleTop="true" />
Мне нужен аргумент pageId в parentActivity, поэтому я получаю его в функции onDestinationChanged
.
всякий раз, когда я перехожу к SecondaryPageFragment
, для первого Если вызывается функция onDestinationChanged
, то когда SecondaryPageFragment
является текущим пунктом назначения (он сверху), повторный переход к SecondaryPageFragment
с другими аргументами не вызывает вызов onDestinationChanged
. но если я перейду, скажем, к FragmentA, то переход к SecondaryPageFragment
вызовет вызов функции onDestinationChanged
.
, если я изменю параметр launchSingleTop
на false, ошибка будет исправлена, и будет вызван onDestinationChanged
, но я не хочу складывать SecondaryPageFragment
.
im, используя androidx NavigationComponent.
fun initNavController(){
//...init nav controler
navController.addOnDestinationChangedListener(this)
}
override fun onDestinationChanged(
controller: NavController,
destination: NavDestination,
arguments: Bundle?
) {
Timber.d("arguments on destination changed ${arguments?.getInt("pageId")} $arguments")
}