Gerke
Gerke

Reputation: 966

actionBarDrawerToggle.setDrawerIndicatorEnabled(false) back arrow has no action

I use a navigation drawer, which I want to disable for inner Fragments. I used following code to setup the drawer:

private void initSideMenu() {
        actionBarDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.Open, R.string.Close);

        drawerLayout.addDrawerListener(actionBarDrawerToggle);
        actionBarDrawerToggle.syncState();

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        binding.nv.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                switch (item.getItemId()) {
                    case R.id.menuData:
                        selectPersonalDataFragment();
                        break;
                    case R.id.menuBlogPosts:
                        closeDrawerAndNavigateTo(new BlogPostFragment(), true);
                        break;
                    case R.id.menuSettings:
                        closeDrawerAndNavigateTo(new BackgroundImageFragment(), true);
                        break;
                }
                return true;
            }
        });
    }

To disable the navigation drawer I use following code:

@Override
    public void setDrawerEnabled(boolean enabled) {
        Log.d(TAG, "setDrawerEnabled: " + enabled);
        if(enabled) {
            drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
            actionBarDrawerToggle.setDrawerIndicatorEnabled(true);
        } else {
            actionBarDrawerToggle.setDrawerIndicatorEnabled(false);
            actionBarDrawerToggle.setToolbarNavigationClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    onBackPressed();
                }
            });
        }
    }

The burger icon changes to a back arrow, but this arrow does not have any functionality. So why is my listener not listening?

Upvotes: 1

Views: 397

Answers (1)

Gerke
Gerke

Reputation: 966

After a lot of trying I found out, that I did not have to set a toolbar navigation click Listener, but had to override onSupportNavigateUp():

Changed setDrawerEnabled():

@Override
    public void setDrawerEnabled(boolean enabled) {
        Log.d(TAG, "setDrawerEnabled: " + enabled);
        if(enabled) {
            drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
            actionBarDrawerToggle.setDrawerIndicatorEnabled(true);
        } else {
            actionBarDrawerToggle.setDrawerIndicatorEnabled(false);
        }
    }

New overriden onSupportNavigateUp():

@Override
    public boolean onSupportNavigateUp() {
        onBackPressed();
        return true;
    }

Upvotes: 1

Related Questions