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