¿Qué necesita para pasar a v4.widget.DrawerLayout.isDrawerOpen () /. OpenDrawer () /. CloseDrawer ()

He estado tratando de mover mi código a laDrawerLayout según lo sugerido por androidaquí comoSlidingDrawer es obsoleto.

Mi problema es que hasta ahora.DrawerLayout Parece que está muy mal implementado, tiene mensajes de error inútiles (no hay programación defensiva) y / o no está lo suficientemente bien explicado en la documentación.

laisDrawerOpen() se describe el métodoaquí:

public boolean isDrawerOpen (cajón de vista)

Compruebe si la vista del cajón dado está actualmente en un estado abierto. Para ser considerado "abierto", el cajón debe haberse colocado en su estado completamente visible. Para verificar la visibilidad parcial, use isDrawerVisible (android.view.View).

Parámetros: cajón - Vista de cajón para comprobar

Devuelve: verdadero si la vista de cajón dada está en un estado abierto

Cada uno de los metodosisDrawerOpen(View drawer), openDrawer(View drawer) ycloseDrawer(View drawer) no trabajar cuando pasa: elDrawerLayout En cuestión o cualquiera de sus hijos. No tengo idea de lo que se supone que debo incluir en estos métodos para permitir que funcionen. ¿Alguien me puede dejar saber?

Vea a continuación la descripción completa del problema con la implementación.

Tengo un diseño así:

<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>

Y en mi código tengo el siguiente método conectado a un botón:

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

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

Sin embargo, si lo da a sí mismo como un argumento (que sería redundante en el extremo) obtendrá el siguiente error:

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

(Como verás, no te da ninguna información sobre lo que hiciste mal. En cambio, es un síntoma del problema).

Otras respuestasaquí oaquí o son incomprensibles o están muy ligados a la pregunta sin mucha explicación. Aun así he intentado añadir una imitación.LinearLayout o uno elDrawerLayouts niños y cada uno danesta 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

¿Alguien puede explicar cuales son estos métodos?actualmente ¿Necesitas haberles pasado a trabajar?

Respuestas a la pregunta(4)

Su respuesta a la pregunta