首页 > 解决方案 > 在不同的导航图中多次使用相同的片段

问题描述

在我的项目中,我使用来自 google 示例的 navigationextensions 类“带有 5 个不同的导航图”来处理我的项目中的底部导航栏导航。

谷歌示例:https ://github.com/android/architecture-components-samples/tree/master/NavigationAdvancedSample 。

我想在多个图表中导航到片段 A。

“现在我收到此错误:此 NavController 不知道导航目的地 action_compareListFragment_to_productPageFragment”

日志猫:

2019-11-26 10:34:02.502 6094-6094/com..app E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com..app, PID: 6094
    java.lang.IllegalArgumentException: navigation destination com..app:id/action_compareListFragment_to_productPageFragment is unknown to this NavController
        at androidx.navigation.NavController.navigate(NavController.java:863)
        at androidx.navigation.NavController.navigate(NavController.java:804)
        at androidx.navigation.NavController.navigate(NavController.java:790)
        at com..app.views.home.accountPage.FavoriteFragment.onGoToProductClicked(FavoriteFragment.java:68)
        at com..app.databinding.FavoriteListItemBindingImpl._internalCallbackOnClick(FavoriteListItemBindingImpl.java:365)
        at com..app.generated.callback.OnClickListener.onClick(OnClickListener.java:11)
        at android.view.View.performClick(View.java:6256)
        at android.view.View$PerformClick.run(View.java:24701)
        at android.os.Handler.handleCallback(Handler.java:789)
        at android.os.Handler.dispatchMessage(Handler.java:98)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6541)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

我应该如何处理这种情况?

如果有人帮助我,我将不胜感激。

标签: androidandroid-jetpackandroid-architecture-navigationandroid-jetpack-navigation

解决方案


您要在多个导航图中使用的片段在每个导航图中应具有相同的 id。此外,在每个图中,相同的片段应该具有相同的片段参数和具有相同 ID 的相同动作。如果您未能满足这些条件,导航组件将根本不会生成代码并且构建失败。


推荐阅读