我有一个类似于 Android Studios 的应用程序Navigation Drawer Activity
:
我的活动使用 Android 架构导航组件和导航抽屉在不同片段之间导航。由于导航抽屉非常自定义,我不能使用通常的导航视图,而是使用托管LinearLayout
. LinearLayout 中的每个项目都有一个 onClickListener 归结为
navController.navigate(R.id.myCorrespondingFragment)
到目前为止,一切正常。导航返回时问题开始:
假设我从“主页”-片段 A -> B -> C 导航,然后返回。
Android Studios 示例行为正确:C -> A -> 关闭
我的实现没有:它只是弹出回栈 C -> B -> A -> close
我该如何解决?
缩小的主布局:
<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout android:id="@+id/drawerLayout" >
<LinearLayout android:orientation="vertical" >
<androidx.appcompat.widget.Toolbar android:id="@+id/toolbar" />
<fragment
android:id="@+id/container"
android:name="androidx.navigation.fragment.NavHostFragment"
app:defaultNavHost="true"
app:navGraph="@navigation/nav_graph"
/>
</LinearLayout>
<fragment
android:name="com.company.drawer.DrawerFragment"
android:layout_gravity="start"
/>
</androidx.drawerlayout.widget.DrawerLayout>
导航图:
<?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"
android:id="@+id/navigation_graph"
app:startDestination="@id/doorFragment"
>
<fragment
android:id="@+id/doorFragment"
android:name="com.company.door.DoorFragment"
android:label="@string/shared_empty"
/>
<fragment
android:id="@+id/historyFragment"
android:name="com.company.history.HistoryFragment"
android:label="@string/history"
/>
<fragment
android:id="@+id/settingsFragment"
android:name="com.company.settings.SettingsFragment"
android:label="@string/settings"
/>
</navigation>
与我的主要活动相关的所有导航onCreate
:
setSupportActionBar(toolbar)
val navController = (supportFragmentManager.findFragmentById(R.id.container) as NavHostFragment).navController
toolbar.setupWithNavController(navController, AppBarConfiguration(
listOf(R.id.doorFragment, R.id.historyFragment, R.id.settingsFragment)
, drawerLayout
))