问题描述
我构建了一个具有登录屏幕和主屏幕的应用程序。我遵循单一活动设计原则。我已经实现了导航抽屉,就像这样。
这是我的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)
}
}
MainAcivity布局
<?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>
我也有两个片段loginFrament
和homeFragment
现在,导航抽屉同时显示了这两个片段,但我希望它仅出现在主屏幕片段中。
检查了一些资源how to hide navigation drawer。但是此方法只能锁定抽屉。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)