Metode setDrawerListener sudah tidak digunakan lagi

226

Sementara saya melakukan sesuatu di aplikasi saya, saya melihat bahwa laci navigasi di aplikasi saya mengurangi ukurannya. Tapi saya tidak melakukan apa-apa untuk itu.

laci navigasi

Kemudian, setelah memeriksa kode, saya melihat setDrawerListener sudah usang. Apakah ada yang punya solusi untuk ini?

drawerLayout.setDrawerListener(actionBarDrawerToggle);
david glorioso
sumber
9
Kode yang sudah usang mungkin tidak ada hubungannya dengan ukuran laci. Ini berarti bahwa mereka akan menghapus dukungan untuknya di masa mendatang (metode khusus). Mungkin diganti dengan addDrawerListener tapi saya tidak yakin itu.
chRyNaN
saya melihat .. tetapi saya tidak dapat melihat masalah, saya baru saja membuat sebuah fragmen baru yang tidak terhubung pada laci itu .. tidak dapat benar-benar mengerti mengapa hal itu terjadi ...
david glorioso
versi perpustakaan apa yang Anda gunakan?
Amit Vaghela
Saya menggunakan ini >> kompilasi 'com.android.support:appcompat-v7:23.2.0', kompilasi 'com.android.support:design:23.2.0', kompilasi 'com.android.support:support-v4 : 23.2.0 '
david glorioso

Jawaban:

751

Gunakan addDrawerListener()sebagai gantinya.

Luxi Liu
sumber
13
Mengapa. Cukup, Kenapa.
Broak
9
Mengapa mereka melakukan omong kosong ini
Alex Wohlbruck
7
Untuk konsistensi API. Mereka menambahkan removeDrawerListener()demikian add...dinamai mencocokkan
Marcin Orlowski
26
setidaknya mereka bisa dimasukkan use 'addDrawerListener' insteadke pesan usang!
AaA
1
Jadi ... bisakah kita menambahkan beberapa pendengar laci?
Kenny Worden
84

Menggantikan:

drawer.setDrawerListener(...);

dengan

drawer.addDrawerListener(...);

public void setDrawerListener(DrawerLayout.DrawerListener listener) Menyetel pendengar untuk diberi tahu tentang acara laci.

Perhatikan bahwa metode ini sudah usang dan Anda harus menggunakan addDrawerListener(DrawerLayout.DrawerListener)untuk menambah pendengar dan removeDrawerListener(DrawerLayout.DrawerListener)untuk menghapus pendengar yang terdaftar.

Jzapata
sumber
18
Di mana kita harus menghapus pendengar laci dan apakah ini perlu?
portfoliobuilder
@portfoliobuilder Tergantung. Secara umum, itu tidak perlu. Jika Anda mengaturnya onCreate()dan Anda memutar seluruh aktivitas layar dibuat kembali dan pendengar baru diatur. Kasus yang lebih kompleks harus ditangani dengan pemikiran bahwa (mungkin) tidak perlu memiliki lebih dari 1 pendengar DrawerLayout.
Johnny Five
29

Menggantikan setDrawerListener

drawerLayout.setDrawerListener(actionBarDrawerToggle);

dengan addDrawerListener

drawerLayout.addDrawerListener(actionBarDrawerToggle);

contoh

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

Saya kira saya akan menjawab pertanyaan saya. Yang terbaru navigationViewmenghasilkan standarnya android:layout_heighthampir 18dpsaat Anda memilih "wrap_content". Jadi, Anda harus memilih android:layout_heightyang Anda inginkan navigationViewatau membuatnya 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>

Bagaimanapun, tinggi itu secara otomatis meningkat ketika Anda menambahkan item di laci navigasi.

Terakhir, Gunakan addDrawerListener()bukan setDrawerListener()sebagai kata Luxi Liu.

david glorioso
sumber
6
karena itu bukan pertanyaan utama saya. tidak bisakah kamu melihat Silakan baca masalah saya sebelumnya ... Ini bukan hanya hal yang sudah usang,
david glorioso
7
Maka mungkin perbaiki judul pertanyaan Anda
Sharique Abdullah