Что нужно передать в 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
(Который, как вы заметите, не дает вам никакой информации о том, что вы сделали неправильно. Вместо этого это симптом проблемы).
Другие ответыВот или жеВот либо непонятны, либо очень тесно связаны с вопросом без особых объяснений. Тем не менее, я попытался добавить искусственныйLinearLayout
или одинDrawerLayout
с детьми и каждый даетэто ошибка:
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
Может кто-нибудь объяснить, что эти методыфактически надо было на них переходить на работу?