【问题标题】:how to open multiple instances of a fragment in navigation component?如何在导航组件中打开一个片段的多个实例?
【发布时间】:2020-12-15 07:57:33
【问题描述】:

我正在开发一个社交媒体应用程序。当用户单击帖子时,会打开一个新片段,并在其下方显示一些相关帖子。如果用户单击相关帖子,则该片段的新实例必须打开并在其下显示点击的帖子和相关帖子。这个页面也有这种行为。每个页面都必须添加到后台堆栈。

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

【问题讨论】:

    标签: android android-fragments android-architecture-navigation android-jetpack-navigation


    【解决方案1】:

    我们可以使用深度链接打开一个片段的多个实例 在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
                android:name=".ui.activity.MainActivity"
                android:label="@string/app_name"
                android:screenOrientation="portrait">
    
                <nav-graph android:value="@navigation/navigation" />
    
            </activity>
    

    【讨论】:

      猜你喜欢
      • 2021-12-28
      • 2013-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多