Android DrawerLayout.setDrawerLockMode () не работает
у меня есть панель навигации (В7 совместимости приложений) в моем приложении, которое работает отлично.
Теперь я хочу отключить его, пока пользователь не купит покупку в приложении, чтобы разблокировать дополнительные функции. Так в моем Activity.onCreate()
, после инициализации ящика и его заполнения, я вызываю эту функцию:
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
эта функция ничего не делает. Ящик продолжает открываться и закрываться как обычно после нажатия на карат ящика в actionbar. Я попытался вызов этой функции в Activity.onResume()
без разницы.
Как правильно использовать эту функцию? (Я попытался найти ответы в интернете, но не смог найти ничего, что касается моей проблемы). Любая помощь приветствуется, так как я застрял в этом вопросе уже довольно давно.
2 ответов
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
отключает только макет открывающегося ящика, проводя, пока вы не нажмете значок навигационного ящика сохранить логическую переменную
написать mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
на onStart()
а также напишите ниже строки кода
@Override
public boolean onOptionsItemSelected(android.view.MenuItem item) {
if(!disabled)
{
if (item.getItemId() == android.R.id.home) {
if (mDrawerLayout.isDrawerOpen(mDrawerLinearLayout)) {
mDrawerLayout.closeDrawer(mDrawerLinearLayout);
} else {
mDrawerLayout.openDrawer(mDrawerLinearLayout);
}
}
}
return super.onOptionsItemSelected(item);
}
это будет работать точно
когда вы называете setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED)
он блокирует открытие и закрытие ящика только на пойло.
ящик продолжает открывать и закрывать как обычно после нажатия на ящик карат в панели действий, потому что ваш ящик будет по-прежнему отвечать на звонки openDrawer(int)
, closeDrawer(int)
хотя ящик заблокирован.
Вам нужно добавить логику в прослушиватель кнопок меню панели действий и не вызывать openDrawer (int), когда вы не хотите его открывать.
кстати, это нормально, чтобы позвонить setDrawerLockMode(int)
в onСreate