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

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.


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.


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

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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.