问题描述
我将导航视图转换为导航组件。
现在,我需要知道如何在登录和注册片段时不显示汉堡图标,并更改其他片段中后退图标的行为,因为现在它像汉堡图标一样打开导航菜单。我做了导航视图:
MainActivity(实现DrawerLocker-我的自定义界面):
@Override
public void setDrawerLocked(boolean enabled) {
if (enabled) {
binding.drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
toggle.setDrawerIndicatorEnabled(false);
} else {
binding.drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
toggle.setDrawerIndicatorEnabled(true);
}
}
SignInFragment:
@Override
public void onViewCreated(@NonNull View view,@Nullable Bundle savedInstanceState) {
super.onViewCreated(view,savedInstanceState);
((DrawerLocker) requireActivity()).setDrawerLocked(true);
}
替换为导航组件: MainActivity:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this,R.layout.activity_main);
setSupportActionBar(binding.appBar.toolbar);
toggle = new ActionBarDrawerToggle(
this,binding.drawerLayout,binding.appBar.toolbar,R.string.navigation_drawer_open,R.string.navigation_drawer_close);
binding.drawerLayout.addDrawerListener(toggle);
toggle.syncState();
binding.navView.setNavigationItemSelectedListener(this);
navController = Navigation.findNavController(this,R.id.main_nav_host_fragment);
mAppBarConfiguration = new AppBarConfiguration.Builder(navController.getGraph())
.setDrawerLayout(binding.drawerLayout)
.build();
NavigationUI.setupActionBarWithNavController(this,navController,mAppBarConfiguration);
}
@Override
public boolean onSupportNavigateUp() {
NavController navController = Navigation.findNavController(this,R.id.main_nav_host_fragment);
return NavigationUI.navigateUp(navController,mAppBarConfiguration)
|| super.onSupportNavigateUp();
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.nav_disconnect_user:
FirebaseAuth.getInstance().signOut();
navController.navigate(R.id.nav_sign_in);
break;
}
NavigationUI.onNavDestinationSelected(item,navController);
binding.drawerLayout.closeDrawer(GravityCompat.START);
return true;
}
谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)