Skip to content

Instantly share code, notes, and snippets.

@IslamKhSh
Created January 24, 2020 10:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save IslamKhSh/df9fdfc6d85def38b8ab6ea1a404530b to your computer and use it in GitHub Desktop.
Save IslamKhSh/df9fdfc6d85def38b8ab6ea1a404530b to your computer and use it in GitHub Desktop.
@Override
public void init(Bundle savedInstanceState) {
initActionBar();
initDrawerNavigation();
}
@Override
public void initActionBar() {
navController = Navigation.findNavController(this, R.id.nav_host_fragment);
setSupportActionBar(mBinding.toolbarMain);
// set top level destinations (hamburger icon appears in them and up icon appears in others)
appBarConfiguration = new AppBarConfiguration
.Builder(mBinding.navigationView.getMenu())
.setDrawerLayout(mBinding.drawerLayout)
.build();
NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
// lock drawer when fragment not in top level fragments
navController.addOnDestinationChangedListener((controller, destination, arguments) -> {
mBinding.drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
if (appBarConfiguration.getTopLevelDestinations().contains(destination.getId()))
mBinding.drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
});
//change icon
getDrawerToggleDelegate().setActionBarUpIndicator(ContextCompat.getDrawable(this,R.drawable.hamburger), R.string.app_name);
}
@Override
public void initDrawerNavigation() {
NavigationUI.setupWithNavController(mBinding.navigationView, navController);
MenuItem logoutItem = mBinding.navigationView.getMenu().findItem(R.id.logout);
logoutItem.setOnMenuItemClickListener(item -> {
// TODO logout
startActivity(new Intent(this, AuthActivity.class));
finish();
return false;
});
}
@Override
public boolean onSupportNavigateUp() {
return NavigationUI.navigateUp(navController, appBarConfiguration);
}
@Override
public void onBackPressed() {
if (mBinding.drawerLayout.isDrawerOpen(GravityCompat.START))
mBinding.drawerLayout.closeDrawer(GravityCompat.START);
else
super.onBackPressed();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment