Issue in Drawer layout & Navigation View with navigation(navGraph) while using navigate in NavController

41 Views Asked by At

Am using Drawer layout & Navigation View with navigation(navGraph), navigation works fine with drawer item. The issue came while I was trying to navigate the fragment on button click by using navigate method navController.navigate(R.id.navigation_leave_apply)

I have three items in Drawer are Home, Leave Apply, Leave Approval. When I go to Leave Apply from Home using navController.navigate(R.id.navigation_leave_apply) in button click event and it navigate to Leave Apply fragment and it was success, but the Leave Apply item is not checked in Drawer. 1st image is navigate through Drawer, 2nd image is using navController.navigate

enter image description here

After this am not able to navigate to Home screen using drawer layout, when I clicked Home nothing happened.

enter image description here

NavController setup Code

NavHostFragment navHostFragment = (NavHostFragment) getSupportFragmentManager()
            .findFragmentById(R.id.nav_host_fragment_content_main);

    assert navHostFragment != null;
    navController = navHostFragment.getNavController();

    mAppBarConfiguration = new AppBarConfiguration.Builder(R.id.navigation_home_screen, R.id.navigation_leave_apply,
            R.id.navigation_leave_approval)
            .setOpenableLayout(binding.drawerLayout).build();

    NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
    NavigationUI.setupWithNavController(binding.navView, navController);

    HeaderNavigationDrawerBinding headerBinding = HeaderNavigationDrawerBinding.bind(binding.navView.getHeaderView(0));


public boolean onSupportNavigateUp() {
    NavHostFragment navHostFragment = (NavHostFragment) getSupportFragmentManager()
            .findFragmentById(R.id.nav_host_fragment_content_main);

    assert navHostFragment != null;
    NavController navController = navHostFragment.getNavController();
    return NavigationUI.navigateUp(navController, mAppBarConfiguration)
            || super.onSupportNavigateUp();
}

On Button Click

navController.navigate(R.id.navigation_leave_apply)

NavGraph

<?xml version="1.0" encoding="utf-8"?>
<navigation 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"
android:id="@+id/navigation_home"
app:startDestination="@+id/navigation_home_screen">

<fragment
    android:id="@+id/navigation_home_screen"
    android:name="com.ntp.view.home.HomeFragment"
    android:label="@string/home"
    tools:layout="@layout/fragment_home" />

<fragment
    android:id="@+id/navigation_leave_apply"
    android:name="com.ntp.view.leave.employee.LeaveApplyFragment"
    android:label="@string/leave"
    tools:layout="@layout/fragment_leave_apply" />

<fragment
    android:id="@+id/navigation_leave_approval"
    android:name="com.ntp.view.leave.approval.LeaveApprovalFragment"
    android:label="@string/leave_approval"
    tools:layout="@layout/fragment_leave_approval" />
</navigation>

How to sync Drawer flow and navController.navigate?

0

There are 0 best solutions below