如何在导航组件中打开片段的多个实例?
how to open multiple instances of a fragment in navigation component?
我正在开发一款社交媒体应用程序。当用户单击 post 时,将打开一个新片段,并在其下方显示一些相关的 post。如果用户单击相关的 post,则该片段的新实例必须打开并在其下方显示已单击的 post 和相关的 post。此页面也有此行为。每个页面都必须添加到返回堆栈。
对于使用导航组件,在这种情况下目标片段是具有不同参数的当前片段。
可以在导航组件中执行此操作吗?
我们可以使用深度链接打开片段的多个实例
在 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>
然后您可以通过以下方式打开新片段:
findNavController().navigate(Uri.parse("myapp://?user_id=${id}"))
您可以通过以下方式在目标片段中获取参数:
arguments?.getString("user_id")
并将其放入清单中的 activity 标记中(如果您想在应用程序外打开此页面):
<activity
android:name=".ui.activity.MainActivity"
android:label="@string/app_name"
android:screenOrientation="portrait">
<nav-graph android:value="@navigation/navigation" />
</activity>
我正在开发一款社交媒体应用程序。当用户单击 post 时,将打开一个新片段,并在其下方显示一些相关的 post。如果用户单击相关的 post,则该片段的新实例必须打开并在其下方显示已单击的 post 和相关的 post。此页面也有此行为。每个页面都必须添加到返回堆栈。
对于使用导航组件,在这种情况下目标片段是具有不同参数的当前片段。 可以在导航组件中执行此操作吗?
我们可以使用深度链接打开片段的多个实例
在 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>
然后您可以通过以下方式打开新片段:
findNavController().navigate(Uri.parse("myapp://?user_id=${id}"))
您可以通过以下方式在目标片段中获取参数:
arguments?.getString("user_id")
并将其放入清单中的 activity 标记中(如果您想在应用程序外打开此页面):
<activity
android:name=".ui.activity.MainActivity"
android:label="@string/app_name"
android:screenOrientation="portrait">
<nav-graph android:value="@navigation/navigation" />
</activity>