Что нужно передать в v4.widget.DrawerLayout.isDrawerOpen () /. OpenDrawer () /. CloseDrawer ()

Я пытался переместить мой код вDrawerLayout как предложено AndroidВот какSlidingDrawer не рекомендуется.

Моя проблема в том, что до сих порDrawerLayout кажется, что он либо очень плохо реализован, имеет бесполезные сообщения об ошибках (без защитного программирования) и / или не достаточно хорошо объяснен в документации.

isDrawerOpen() метод описанВот:

public boolean isDrawerOpen (Просмотреть ящик)

Проверьте, находится ли данный вид ящика в настоящее время в открытом состоянии. Чтобы считаться «открытым», ящик должен прийти в полностью видимое состояние. Для проверки частичной видимости используйте isDrawerVisible (android.view.View).

Параметры: ящик - Вид ящика для проверки

Возвраты: true, если данный вид ящика находится в открытом состоянии

Каждый из методовisDrawerOpen(View drawer), openDrawer(View drawer) а такжеcloseDrawer(View drawer) не работает, когда прошло:DrawerLayout или кто-то из детей. Я понятия не имею, что я должен вводить в эти методы, чтобы позволить им функционировать. Может кто-нибудь дать мне знать?

Смотрите ниже полное описание проблемы с реализацией.

У меня есть такой макет:

<android.support.v4.widget.DrawerLayout
    android:id="@+id/mainmenuPanel"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <FrameLayout
        android:id="@+id/dualPane"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <FrameLayout
        android:id="@+id/menuPane"
        android:layout_width="300dp"
        android:layout_height="match_parent" />
</android.support.v4.widget.DrawerLayout>

И в моем коде у меня есть следующий метод, подключенный к кнопке:

protected void onCreate(Bundle savedInstanceState) {    
    ...
    mMenuPanel = (DrawerLayout) findViewById(R.id.mainmenuPanel);
    ....
}

public boolean isDrawerOpen() {
    if(mMenuPanel != null) {
        return mMenuPanel.isDrawerOpen(mMenuPanel);
    }
    return false;
}

Однако, если вы дадите его себе в качестве аргумента (который в крайнем случае будет избыточным), вы получите следующую ошибку:

E/AndroidRuntime(11241): java.lang.ClassCastException: 
android.widget.FrameLayout$LayoutParams cannot be cast to 
android.support.v4.widget.DrawerLayout$LayoutParams

(Который, как вы заметите, не дает вам никакой информации о том, что вы сделали неправильно. Вместо этого это симптом проблемы).

Другие ответыВот&nbsp;или жеВот&nbsp;либо непонятны, либо очень тесно связаны с вопросом без особых объяснений. Тем не менее, я попытался добавить искусственныйLinearLayout&nbsp;или одинDrawerLayoutс детьми и каждый даетэто&nbsp;ошибка:

E/AndroidRuntime(11424): java.lang.IllegalArgumentException: 
View android.widget.FrameLayout{420f5ea8 V.E..... ........ 
0,0-800,1172 #7f060038 app:id/menuPane} is not a drawer

Может кто-нибудь объяснить, что эти методыфактически&nbsp;надо было на них переходить на работу?