我将使用Navigation Graph开发一个Android应用程序,该应用程序具有单个活动和两个带有导航抽屉的片段(LoginFragment和HomeFragment)。
当我在活动中添加Navigationdrawer
时,它在LoginFragment
中可见,但是我只想在HomeFragment
中显示汉堡图标,而不是LoginFragment
。
如何在活动中添加导航抽屉而不将其添加到LoginFragment
我试图隐藏toolbar
val navController=this.findNavController(R.id.nav_host_fragment)
navController.addOnDestinationChangedListener{ nc: NavController, nd: NavDestination, _->
if(nd.id==nc.graph.startDestination){
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED)
binding.toolBar.visibility = View.GONE
}else{
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED)
NavigationUI.setupActionBarWithNavController(this,navController,drawerLayout)
binding.toolBar.visibility = View.VISIBLE
}
我只想在HomeFragment
中显示汉堡图标,而不是LoginFragment
答案 0 :(得分:0)
最好为“登录”页面创建单独的活动。登录后,您现在可以调用活动主体并设置HomeFragment。
答案 1 :(得分:0)
您可以在活动中创建用于隐藏和显示导航抽屉图标的函数,并在CreateView的相应片段中调用这些函数
答案 2 :(得分:0)
我认为您正在使用Kotlin。但是我认为它与Java中的方法没有什么不同。您可以从Java转换为Kotlin。那就是我在Java中所做的。
((AppCompatActivity) getActivity()).getSupportActionBar().hide(); // to hide toolbar
((AppCompatActivity) getActivity()).getSupportActionBar().show(); //to show toolbar
您需要在片段中使用此代码。例如,您可以设置... hide(); LoginFragment的onCreateView方法中的方法,之后可以设置... show(); HomeFragment的oncreateView中的方法。