【问题标题】:Android Navigation - After deeplink navigation to second fragment, open first fragment in the same graph, but from another navigation graphAndroid导航 - 在深度链接导航到第二个片段后,在同一个图中打开第一个片段,但来自另一个导航图
【发布时间】:2020-03-10 12:49:17
【问题描述】:

在我的导航中,我有这样的东西:

  1. 当我从深层链接打开registrationFragment(在entry_graph 中)并完成注册时,我会导航到main_graph (MainFragment)。

  2. 从那里,我可以访问 menuFragment 并单击 logOut,它会调用:

    MainFragmentDirections.actionMainFragmentToEntryFragment()

  3. 它打开registrationFragment而不是loginFragment。我不希望这样,因为 loginFragment 是该图上的主片段。

当我有类似的导航但不使用深层链接时,它会正常工作,它会打开该图中的第一个片段,但使用此深层链接流,它总是会打开由深层打开的片段-链接,无论它在导航图中的位置。

我在 SO 和 web 上搜索过解决方案,但在任何地方都找不到相同的问题。

我曾尝试从后台堆栈和类似的解决方案中手动删除它,但我无法成功,它总是首先打开由深层链接打开的片段。

我正在使用导航版本 2.1.0,但在当前最新的 2.2.0 上测试了此流程,它的行为相同。

有人知道这个导航流程是否有解决方案吗?

【问题讨论】:

    标签: android android-fragments graph navigation deep-linking


    【解决方案1】:

    如何在第 2 步中导航?我尝试了相同的流程,当我使用here 描述的代码时它工作了。

    基本上就是这个代码

    PendingIntent pendingIntent = new NavDeepLinkBuilder(context)
    .setGraph(R.navigation.nav_graph)
    .setDestination(R.id.android)
    .setArguments(args)
    .createPendingIntent();
    

    如文档中所述,当您使用 Intent 进行导航时,后台堆栈会被重置,并填充每个先前图表的 home 片段。 只需确保在 nav_graph xml 中正确描述了所需的后台堆栈 - 每个 home 片段 打开一个新的缩进。

    希望它对你有用:)

    【讨论】:

    • 嗨@Liaz,感谢您的回答。抱歉,我之前无法回答,但这种方法不适合我,因为在单击电子邮件中的链接时会调用深层链接(它不是在应用程序本身中创建的),我们仅在导航 xml 图。你知道解决这个问题的其他方法吗?顺便说一句,我们在第 2 步中从注册片段导航,就像使用导航方向从任何其他片段一样:RegisterFragmentDirections.actionRegisterFragmentTo...
    猜你喜欢
    • 2021-12-28
    • 1970-01-01
    • 2021-11-30
    • 2013-05-12
    • 2022-01-10
    • 1970-01-01
    • 2020-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多