具有通知和嵌套多个图的Jetpack导航图

时间:2019-12-05 09:25:31

标签: android kotlin android-jetpack android-jetpack-navigation

我有一个带有导航主机片段的活动。我有多个嵌套图。流程如下:

主导航图包含启动画面,我们从中确定如果用户已登录,则将重定向到仪表板图,如果用户未登录,则将重定向到登录图。

仪表板图具有“底部导航视图”,如果我发送“底部导航视图通知”第三选项卡,我的问题就变成了图片。所以我怎么称呼那个片段。

因为当前我的应用程序位于第一个选项卡的前台,如果我收到了第三个选项卡的通知,那么它也会加载启动画面,并且如果应用程序处于后台或已终止状态,它也会进入第一个选项卡。

如何管理此方案,请提出建议。

  

以下是我用于发送有待处理的通知的代码:

 var args = Bundle()
    if (!clickAction.isNullOrEmpty() && clickAction.equals("More")) {
        args.putString("click_action", clickAction)
        args.putString("userId", userId)
        deeplink = NavDeepLinkBuilder(this)
            .setGraph(R.navigation.dashboard_graph)
            .setDestination(R.id.fragmentMore)
            .setArguments(args)
            .createPendingIntent()
        Log.e("Deep Lin---k", "More")
    }
  

仪表盘导航图如下:

<?xml version="1.0" encoding="utf-8"?>

    

<fragment
    android:id="@+id/profileFragment"
    android:name="com.appname.structure.dashabord.ui.FragmentProfile"
    android:label="@string/label_profile"
    tools:layout="@layout/fragment_profile">


</fragment>


<fragment
    android:id="@+id/fragmentChangePassword"
    android:name="com.appname.structure.user.ui.FragmentChangePassword"
    android:label="@string/label_change_password"
    tools:layout="@layout/fragment_change_password" />

<fragment
    android:id="@+id/fragmentMore"
    android:name="com.appname.structure.dashabord.ui.FragmentMore"
    android:label="@string/label_more"
    tools:layout="@layout/fragment_more">

    <action
        android:id="@+id/action_move_to_change_password"
        app:destination="@id/fragmentChangePassword"
        app:enterAnim="@anim/pull_in_right"
        app:exitAnim="@anim/push_out_left"
        app:popEnterAnim="@anim/pull_in_left"
        app:popExitAnim="@anim/push_out_right" />


    <action
        android:id="@+id/action_move_to_login_dashboard"
        app:destination="@+id/user_graph"
        app:enterAnim="@anim/pull_in_right"
        app:exitAnim="@anim/push_out_left"
        app:popEnterAnim="@anim/pull_in_left"
        app:popExitAnim="@anim/push_out_right"
        app:popUpTo="@+id/fragmentMore"
        app:popUpToInclusive="true" />

    <action
        android:id="@+id/action_move_to_cms_dashbaord"
        app:destination="@id/cmsFragment"
        app:enterAnim="@anim/pull_in_right"
        app:exitAnim="@anim/push_out_left"
        app:popEnterAnim="@anim/pull_in_left"
        app:popExitAnim="@anim/push_out_right" />

    <action
        android:id="@+id/action_move_to_change_language"
        app:destination="@id/languageFragment"
        app:enterAnim="@anim/pull_in_right"
        app:exitAnim="@anim/push_out_left"
        app:popEnterAnim="@anim/pull_in_left"
        app:popExitAnim="@anim/push_out_right" />


</fragment>

<fragment
    android:id="@+id/cmsFragment"
    android:name="com.appname.structure.cmspage.FragmentCMSPage"
    android:label=""
    tools:layout="@layout/fragment_cms">
    <deepLink
        android:id="@+id/deepLink"
        app:uri="https://navigation.tutorial/{cms-url}/{cms-title}" />
</fragment>


<fragment
    android:id="@+id/fragmentStore"
    android:name="com.appname.structure.dashabord.ui.FragmentStore"
    android:label="FragmentStore" />


<fragment
    android:id="@+id/languageFragment"
    android:name="com.appname.structure.dashabord.ui.FragmentChangeLanguage"
    android:label="@string/label_change_language"
    tools:layout="@layout/fragment_change_language" />
</navigation>

请根据您的经验进行检查并提供最佳支持。

0 个答案:

没有答案