El método setDrawerListener está en desuso


226

Mientras hago algo en mi aplicación, veo que el cajón de navegación de mi aplicación redujo su tamaño. Pero no estoy haciendo nada al respecto.

cajón de navegación

Luego, después de verificar el código, vi que setDrawerListener está en desuso. ¿Alguien tiene una solución para esto?

drawerLayout.setDrawerListener(actionBarDrawerToggle);

99
El código en desuso probablemente no tiene nada que ver con el tamaño del cajón. Significa que eliminarán el soporte en el futuro (el método específico). Probablemente se reemplaza con un addDrawerListener, pero no estoy seguro de eso.
CHRYNaN

Ya veo ... pero no puedo ver ningún problema, acabo de crear un nuevo fragmento que no está conectado en ese cajón ... Realmente no puedo entender por qué sucedió eso ...
David glorioso

¿Qué versión de biblioteca estás usando?
Amit Vaghela

Estoy usando esto >> compilar 'com.android.support:appcompat-v7:23.2.0', compilar 'com.android.support:design:23.2.0', compilar 'com.android.support:support-v4 : 23.2.0 '
david glorioso

Respuestas:


751

Usar en su addDrawerListener()lugar.


13
Por qué. Simplemente por qué.
Broak

99
¿Por qué hacen esta basura?
Alex Wohlbruck

77
Por consistencia API. Se añaden removeDrawerListener()por lo que add...debe su nombre para que coincida
Marcin Orlowski

26
¡al menos podrían incluirse use 'addDrawerListener' insteaden mensajes obsoletos!
AaA

1
Entonces ... ¿podemos agregar múltiples oyentes de cajones?
Kenny Worden

84

Reemplazar:

drawer.setDrawerListener(...);

con

drawer.addDrawerListener(...);

public void setDrawerListener(DrawerLayout.DrawerListener listener) Establece un oyente para ser notificado de los eventos del cajón.

Tenga en cuenta que este método está en desuso y debe usarlo addDrawerListener(DrawerLayout.DrawerListener)para agregar un escucha y removeDrawerListener(DrawerLayout.DrawerListener)eliminar un escucha registrado.


18
¿Dónde deberíamos eliminar al oyente del cajón? ¿Es esto necesario?
portfoliobuilder

@portfoliobuilder Depende. En general, no es necesario. Si lo configura onCreate()y gira la pantalla, se recrea toda la actividad y se configura un nuevo oyente. Los casos más complejos deben manejarse con la idea de que (probablemente) no es necesario tener más de 1 oyente configurado DrawerLayout.
Johnny Five

29

Reemplazar setDrawerListener

drawerLayout.setDrawerListener(actionBarDrawerToggle);

con addDrawerListener

drawerLayout.addDrawerListener(actionBarDrawerToggle);

ejemplo

  DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                    this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
            assert drawer != null;
            drawer.addDrawerListener(toggle);
            toggle.syncState();

            NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
            assert navigationView != null;
            navigationView.setNavigationItemSelectedListener(this);

22

Supongo que voy a responder mi pregunta. La última navigationViewproduce su valor predeterminado android:layout_heightcasi 18dpcuando eliges "wrap_content". Por lo tanto, debe elegir lo android:layout_heightque desea para su navigationViewo simplemente hacer android:layout_height="match_parent".

<android.support.design.widget.NavigationView
    android:layout_width="320dp"
    android:layout_height="550dp"
    android:id="@+id/navigation_view_admin"
    android:layout_gravity="start">

</android.support.design.widget.NavigationView>

De todos modos, su altura aumenta automáticamente cuando agrega un elemento en el cajón de navegación.

Por último, use en addDrawerListener()lugar de setDrawerListener()como dijo Luxi Liu.


66
porque esa no es mi pregunta principal. no puedes ver Por favor, lea mi problema antes ... No es solo lo desaprobado,
david glorioso

77
Entonces puede arreglar el título de su pregunta
Sharique Abdullah
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.