本文介绍了如何在导航组件中打开片段的多个实例?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在社交媒体应用程序上工作.当用户单击帖子时,将打开一个新的片段,并在其下方显示一些相关的帖子.如果用户单击相关帖子,则必须打开该片段的新实例并在其下显示单击的帖子和相关帖子.此页面也有此行为.每页必须添加到堆栈中.

I working on a social media App. when user click on a post, a new fragment open and some related post showing under it. if user click on a related post, new instance of that fragment must open and show clicked post and related posts under it. this page also have this behavior. each page must add to back stack.

用于使用导航组件,在这种情况下,目标片段是具有不同参数的当前片段.可以在导航组件中做到这一点?

for using navigation component, in this case destination fragment is current fragment with different argument.can do this in navigation component?

推荐答案

我们可以使用Deeplink打开一个片段的多个实例在 navigation.xm 中:

we can open multiple instace of a fragment by using deeplinkin navigation.xm :

<fragment
      android:id="@+id/navigation_profile"
      tools:layout="@layout/fragment_profile_owner"
      android:label="@string/profile" >

    <deepLink
        android:id="@+id/profileDeepLink"
        app:uri="myapp://?user_id={user_id}" />

  </fragment>

然后您可以通过以下方式打开新片段:

and then you can open new fragment by:

findNavController().navigate(Uri.parse("myapp://?user_id=${id}"))

您可以通过以下方式获得目的地片段中的争议:

and you can get arguemnt in destination fragment by:

arguments?.getString("user_id")

并将其放在清单中的活动标签中(如果您想在应用之外打开此页面):

and put this in activity tag in manifest (if you want to open this page out of app):

<activity
            android:name=".ui.activity.MainActivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait">

            <nav-graph android:value="@navigation/navigation" />

        </activity>

这篇关于如何在导航组件中打开片段的多个实例?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-04 02:16