Was müssen Sie an v4.widget.DrawerLayout.isDrawerOpen () /. OpenDrawer () /. CloseDrawer () übergeben
Ich habe versucht, meinen Code in das zu verschiebenDrawerLayout
wie von Android vorgeschlagenHier wieSlidingDrawer
ist veraltet.
Mein Problem ist das soweitDrawerLayout
scheint entweder sehr schlecht implementiert zu sein, hat nicht hilfreiche Fehlermeldungen (keine defensive Programmierung) und / oder wird in der Dokumentation nicht gut genug erklärt.
dasisDrawerOpen()
Methode wird beschriebenHier:
public boolean isDrawerOpen (Schublade anzeigen)
Überprüfen Sie, ob die angegebene Schubladenansicht derzeit geöffnet ist. Um als "offen" zu gelten, muss sich die Schublade in ihrem vollständig sichtbaren Zustand befunden haben. Verwenden Sie isDrawerVisible (android.view.View), um die teilweise Sichtbarkeit zu überprüfen.
Parameter: Schublade - Zu überprüfende Schubladenansicht
Rückgabe: true, wenn die angegebene Schubladenansicht geöffnet ist
Jede der MethodenisDrawerOpen(View drawer)
, openDrawer(View drawer)
undcloseDrawer(View drawer)
funktioniert nicht, wenn bestanden:DrawerLayout
in Frage oder eines seiner Kinder. Ich habe keine Ahnung, was ich in diese Methoden einspeisen soll, damit sie funktionieren. Kann mir jemand Bescheid geben?
Im Folgenden finden Sie eine vollständige Problembeschreibung mit der Implementierung.
Ich habe ein Layout wie folgt:
<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>
Und in meinem Code habe ich die folgende Methode an eine Schaltfläche angeschlossen:
protected void onCreate(Bundle savedInstanceState) {
...
mMenuPanel = (DrawerLayout) findViewById(R.id.mainmenuPanel);
....
}
public boolean isDrawerOpen() {
if(mMenuPanel != null) {
return mMenuPanel.isDrawerOpen(mMenuPanel);
}
return false;
}
Wenn Sie es jedoch selbst als Argument angeben (was im Extremfall überflüssig wäre), erhalten Sie den folgenden Fehler:
E/AndroidRuntime(11241): java.lang.ClassCastException:
android.widget.FrameLayout$LayoutParams cannot be cast to
android.support.v4.widget.DrawerLayout$LayoutParams
(Was Ihnen, wie Sie feststellen werden, keine Informationen darüber gibt, was Sie falsch gemacht haben. Es ist stattdessen ein Symptom des Problems.)
Andere AntwortHier oderHier sind entweder unverständlich oder ohne viel Erklärung sehr eng mit der Frage verbunden. Trotzdem habe ich versucht, einen Imitat hinzuzufügenLinearLayout
oder einer derDrawerLayout
s Kinder und jeder gebendiese Error:
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
Kann mir jemand erklären, was diese Methoden sindtatsächlich Müssen sie übergeben haben, um zu arbeiten?