O método setDrawerListener está obsoleto


226

Enquanto estou fazendo algo no meu aplicativo, vejo que a gaveta de navegação no meu aplicativo reduziu seu tamanho. Mas não estou fazendo nada sobre isso.

gaveta de navegação

Depois de verificar o código, vi que setDrawerListener está obsoleto. Alguém tem uma solução para isso?

drawerLayout.setDrawerListener(actionBarDrawerToggle);

9
O código descontinuado provavelmente não tem nada a ver com o tamanho da gaveta. Isso significa que eles removerão o suporte no futuro (o método específico). Provavelmente é substituído por um addDrawerListener, mas não tenho certeza disso.
chRyNaN

i ver .. mas eu não posso ver qualquer problema, eu só criou um novo fragmento que não está ligado na gaveta .. realmente não posso entender por que essa coisa aconteceu ...
david glorioso

qual versão da biblioteca você está usando?
Amit Vaghela

Estou usando este >> 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 26/02

Respostas:


751

Use em addDrawerListener()vez disso.


13
Por quê. Simplesmente porque.
Broak 02/02

9
Por que eles fazem essa porcaria
Alex Wohlbruck 18/17

7
Para consistência da API. Eles acrescentaram removeDrawerListener()que o add...nome está marcado para corresponder
Marcin Orlowski 25/04

26
pelo menos eles poderiam ser incluídos use 'addDrawerListener' insteadem mensagens obsoletas!
AaA

1
Então ... podemos adicionar vários ouvintes de gaveta?
precisa saber é o seguinte

84

Substituir:

drawer.setDrawerListener(...);

com

drawer.addDrawerListener(...);

public void setDrawerListener(DrawerLayout.DrawerListener listener) Define um ouvinte para ser notificado dos eventos da gaveta.

Observe que esse método está obsoleto e você deve usar addDrawerListener(DrawerLayout.DrawerListener)para adicionar um ouvinte e removeDrawerListener(DrawerLayout.DrawerListener)remover um ouvinte registrado.


18
Onde devemos remover o ouvinte da gaveta e isso é necessário?
portfoliobuilder

@portfoliobuilder Depende. Geralmente, não é necessário. Se você configurá-lo onCreate()e girar a tela, toda a atividade é recriada e o novo ouvinte é definido. Os casos mais complexos devem ser tratados com o pensamento de que (provavelmente) não há necessidade de ter mais de 1 ouvinte definido DrawerLayout.
Johnny Cinco

29

Substituir setDrawerListener

drawerLayout.setDrawerListener(actionBarDrawerToggle);

com addDrawerListener

drawerLayout.addDrawerListener(actionBarDrawerToggle);

exemplo

  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

Acho que vou responder minha pergunta. O mais recente navigationViewproduz seu padrão android:layout_heightquase 18dpquando você escolhe "wrap_content". Então, você deve escolher o android:layout_heightque deseja navigationViewou simplesmente criar 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 qualquer forma, sua altura aumenta automaticamente quando você adiciona um item na gaveta de navegação.

Por fim, use em addDrawerListener()vez de setDrawerListener()como disse Luxi Liu.


6
porque essa não é minha pergunta principal. você não pode ver? Por favor, leia o meu problema antes ... Não é apenas a coisa obsoleta,
david glorioso

7
Em seguida, pode ser corrigir título da sua pergunta
Sharique Abdullah
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.