我正在尝试在我的项目中使用Navigation Component实现NavigationDrawer。我有一个作为入口点的MainActivity和多个fragment目标。我已经将我的抽屉菜单项链接到nav_graph.xml中的目标,一切都很顺利。
我的NavigationDrawer中有一个“注销”菜单项选项,当点击它时,我会启动LoginActivity。我的问题是:
这是我的drawer_menu.xml文件。
我的NavigationDrawer中有一个“注销”菜单项选项,当点击它时,我会启动LoginActivity。我的问题是:
- 我将LoginActivity添加到了我的nav_graph中,并将其链接到抽屉中的注销菜单项,这样做是否正确?
- 一旦启动LoginActivity,当用户按系统返回按钮时,我希望应用程序回到启动屏幕而不是堆栈中的上一个目标。使用Navigation Component可以实现这一点吗?
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/nav_graph"
app:startDestination="@id/dashboardFragment">
<fragment
android:id="@+id/dashboardFragment"
android:name="com.example.fragment.DashboardFragment"
android:label="DashboardFragment"
tools:layout="@layout/fragment_dashboard" />
<fragment
android:id="@+id/profileFragment"
android:name="com.example.fragment.ProfileFragment"
android:label="ProfileFragment"
tools:layout="@layout/fragment_profile" />
<fragment
android:id="@+id/settingsFragment"
android:name="com.example.fragment.SettingsFragment"
android:label="SettingsFragment"
tools:layout="@layout/fragment_sale_edit" />
<activity
android:id="@+id/loginActivity"
android:name="com.example.activity.LogoutActivity"
android:label="LogoutActivity"></activity>
</navigation>
这是我的drawer_menu.xml文件。
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:showIn="navigationView">
<group android:checkableBehavior="single">
<item
android:id="@+id/dashboardFragment"
android:icon="@drawable/ic_menu_camera"
android:title="Dashboard" />
<item
android:id="@+id/profileFragment"
android:icon="@drawable/ic_menu_gallery"
android:title="Profile" />
<item
android:id="@+id/settingsFragment"
android:icon="@drawable/ic_menu_slideshow"
android:title="Sale Edits" />
<item
android:id="@+id/loginActivity"
android:icon="@drawable/ic_menu_manage"
android:title="Logout" />
</group>
</menu>
<fragment
android:id="@+id/navHostFragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:navGraph="@navigation/nav_graph"/>