Android drawer open works only once. I have tried several approaches. My Code:
public void openDrawer() {
ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(this, drawer, R.string.drawer_open, R.string.drawer_close);
drawer.setDrawerListener(mDrawerToggle);
mDrawerToggle.syncState();
if(drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawers();
} else {
drawer.openDrawer(GravityCompat.START);
}
}
and approach 2:
public void openDrawer() {
if(drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawers();
} else {
drawer.openDrawer(GravityCompat.START);
}
}
In Both cases works only first time it is opened and closed.
EDIT Problem is that I call method from presenter. It is working if I bind it to OnClickListener in Activity. I guess I will need something like preventDefault.
Try this way, it works for me in many cases.
EDIT: Add this part to your onCreate()
method. And call it only once.
ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(this, drawer, R.string.drawer_open, R.string.drawer_close);
drawer.setDrawerListener(mDrawerToggle);
mDrawerToggle.syncState();
then set a click listener to your custom button.
customButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (drawer.isDrawerOpen(navigationView)) {
closeDrawer();
} else {
openDrawer();
}
}
});
these are helper methods
public void openDrawer() {
drawer.openDrawer(GravityCompat.START);
}
public void closeDrawer() {
drawer.closeDrawer(GravityCompat.START);
}