我有一个带有导航主机片段的活动。我有多个嵌套图。流程如下:
主导航图包含启动画面,我们从中确定如果用户已登录,则将重定向到仪表板图,如果用户未登录,则将重定向到登录图。
仪表板图具有“底部导航视图”,如果我发送“底部导航视图通知”第三选项卡,我的问题就变成了图片。所以我怎么称呼那个片段。
因为当前我的应用程序位于第一个选项卡的前台,如果我收到了第三个选项卡的通知,那么它也会加载启动画面,并且如果应用程序处于后台或已终止状态,它也会进入第一个选项卡。
如何管理此方案,请提出建议。
以下是我用于发送有待处理的通知的代码:
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>
请根据您的经验进行检查并提供最佳支持。