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);
david glorioso
fonte
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.

Luxi Liu
fonte
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.

Jzapata
fonte
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);
sivaBE35
fonte
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.

david glorioso
fonte
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