在某些片段中隐藏导航抽屉

3

我正在开发一个应用程序,其中包含登录界面和主屏幕。我遵循单一活动设计原则。我已经像这样实现了导航抽屉。

这是我的MainActivity

class MainActivity : AppCompatActivity() {

private lateinit var drawerLayout: DrawerLayout
private lateinit var appBarConfiguration: AppBarConfiguration

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    val binding = ActivityMainBinding.inflate(layoutInflater)
    setContentView(binding.root)

    drawerLayout = binding.drawerLayout

    val navController = this.findNavController(R.id.navHostFragment)
    NavigationUI.setupActionBarWithNavController(this, navController, drawerLayout)

    appBarConfiguration = AppBarConfiguration(navController.graph, drawerLayout)
    NavigationUI.setupWithNavController(binding.navView, navController)
}

override fun onSupportNavigateUp(): Boolean {
    val navController = this.findNavController(R.id.navHostFragment)
    return NavigationUI.navigateUp(navController,drawerLayout)
}
}

主活动布局

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

<layout 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">
<androidx.drawerlayout.widget.DrawerLayout
    android:id="@+id/drawerLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <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/navigation" />
    </FrameLayout>
    <com.google.android.material.navigation.NavigationView
        android:id="@+id/navView"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:menu="@menu/navdrawer" />
</androidx.drawerlayout.widget.DrawerLayout>

我还有两个片段 loginFramenthomeFragment, 现在导航抽屉显示了这两个片段,但我希望它只在主屏幕片段中显示。 查阅了一些资源 如何隐藏导航抽屉。但是这种方法只锁定了抽屉。


你如何导航到loginFragment? - Gabriele Mariotti
我正在使用导航图进行导航,我正在使用Jetpack的导航设计模式。@GabrieleMariotti - Dharmaraj
1个回答

0

我有一个相同的设计应用程序,我使用活动(activity)制作了登录/注册屏幕和其他所有屏幕,我想要使用导航抽屉(nav drawer)进行导航,这些屏幕都是由片段(fragments)制作的。在一些子菜单中,我不想显示抽屉,所以我再次使用了活动。活动和片段很好地协同工作。对我来说,在活动之间进行导航似乎更容易。祝编码愉快!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接