O que você precisa passar para v4.widget.DrawerLayout.isDrawerOpen () /. OpenDrawer () /. CloseDrawer ()
Eu tenho tentado mover meu código para oDrawerLayout
como sugerido pelo androidAqui ComoSlidingDrawer
está obsoleto.
Meu problema é que até agoraDrawerLayout
parece ser muito mal implementado, tem mensagens de erro inúteis (sem programação defensiva) e / ou não é explicado suficientemente bem na documentação.
aisDrawerOpen()
método é descritoAqui:
isDrawerOpen booleano público (View drawer)
Verifique se a visualização da gaveta fornecida está atualmente em estado aberto. Para ser considerada "aberta", a gaveta deve ter sido colocada em seu estado totalmente visível. Para verificar a visibilidade parcial, use isDrawerVisible (android.view.View).
Parâmetros: gaveta - Vista da gaveta para verificar
Retorna: true se a exibição da gaveta fornecida estiver em um estado aberto
Cada um dos métodosisDrawerOpen(View drawer)
, openDrawer(View drawer)
ecloseDrawer(View drawer)
não funciona quando passado:DrawerLayout
em questão ou seja de seus filhos. Eu não tenho ideia do que devo alimentar nesses métodos para permitir que eles funcionem. Alguém pode me avisar?
Veja abaixo toda a descrição do problema com a implementação.
Eu tenho um layout assim:
<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>
E no meu código eu tenho o seguinte método ligado a um botão:
protected void onCreate(Bundle savedInstanceState) {
...
mMenuPanel = (DrawerLayout) findViewById(R.id.mainmenuPanel);
....
}
public boolean isDrawerOpen() {
if(mMenuPanel != null) {
return mMenuPanel.isDrawerOpen(mMenuPanel);
}
return false;
}
No entanto, se você der a si mesmo como um argumento (o que seria redundante ao extremo), você obterá o seguinte erro:
E/AndroidRuntime(11241): java.lang.ClassCastException:
android.widget.FrameLayout$LayoutParams cannot be cast to
android.support.v4.widget.DrawerLayout$LayoutParams
(O que você notará, não lhe dá nenhuma informação sobre o que você fez de errado. É, ao invés disso, um sintoma do problema).
Outras respostasAqui ouAqui são incompreensíveis ou intimamente ligados à questão sem muita explicação. Mesmo assim, eu tentei adicionar um falsoLinearLayout
ou um dosDrawerLayout
s crianças e cada um dáisto erro:
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
Alguém pode explicar o que esses métodosna realidade precisa ter passado para eles para trabalhar?