onDestinationChanged не вызывается при повторном запуске одного верхнего пункта назначения - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть пункт назначения, который предназначен для использования в качестве одной вершины. определяется как:

    <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")
}
...