问题
I have a mainactivity where I have created a method to lock/unlock the drawer_layout and locked it in the onCreate()
method.
public void disableDrawer(Boolean bol){
if(bol) {
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN);
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
}else{
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
}
}
and after checking if the user is logged in or not i want to unlock the drawer from the fragment. I tried to do this in onActivityCreated but the drawer is still locked
MainActivity activity = ((MainActivity)getActivity());
activity.disableDrawer(false);
in short
DrawerLayout.LOCK_MODE_UNLOCKED
doesn't unlock DrawerLayout
...
any help would be appreciated.
回答1:
you have to initialize toggle again.
toggle = new ActionBarDrawerToggle(this, mDrawerLayout, mToolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); mDrawerLayout.addDrawerListener(toggle);
After that, it unlocked.
回答2:
After struggling a little.. nothing among other solutions in stackoverflow worked for me. My specific problem was also that I was able to lock but not to unlock the DrawerLayout.
Then I saw in documentation (https://developer.android.com/reference/android/support/v4/widget/DrawerLayout#setdrawerlockmode) that there are two more functions:
void setDrawerLockMode (int lockMode, View drawerView)
void setDrawerLockMode (int resId, int edgeGravity)
The second one worked for me like a charm.
I simply specified the Gravity.LEFT parameter and now all is working perfectly.
来源:https://stackoverflow.com/questions/23217214/unlock-drawer-layout-when-it-is-locked