Метод setDrawerListener застарілий


226

Хоча я щось роблю на своєму додатку, я бачу, що навігаційний ящик у моєму додатку зменшив його розмір. Але я нічого не роблю з цього приводу.

навігаційний ящик

Потім, перевіривши код, я побачив, що setDrawerListener застарілий. Хтось має на це рішення?

drawerLayout.setDrawerListener(actionBarDrawerToggle);

9
Скинутий код, ймовірно, не має нічого спільного з розміром ящика. Це означає, що вони надалі знімуть підтримку (конкретний метод). Можливо, це замінено на addDrawerListener, але я не впевнений у цьому.
chRyNaN

я бачу .. але я не бачу жодної проблеми, я просто створив новий фрагмент , який не підключений на цей ящик .. не можу зрозуміти , чому це сталося і ...
Девід Glorioso

яку версію бібліотеки ви використовуєте?
Аміт Вагела

Я використовую цей >> компілювати 'com.android.support:appcompat-v7:23.2.0', компілювати 'com.android.support:design:23.2.0', компілювати 'com.android.support:support-v4 : 23.2.0 '
Давид глоріосо

Відповіді:


751

Використовуйте addDrawerListener()замість цього.


13
Чому? Просто, чому.
Брок

9
Чому вони роблять це лайно
Алекс Вольбрук

7
Для послідовності API. Вони додали, що removeDrawerListener()так add...названо, щоб відповідати
Marcin Orlowski

26
принаймні, вони могли б включити use 'addDrawerListener' insteadдо застарілого повідомлення!
AaA

1
Отже ... чи можемо ми додати декілька слухачів ящиків?
Kenny Worden

84

Замінити:

drawer.setDrawerListener(...);

з

drawer.addDrawerListener(...);

public void setDrawerListener(DrawerLayout.DrawerListener listener) Встановлює прослуховування слухача про події в ящику.

Зауважте, що цей метод застарілий, і вам слід використовувати addDrawerListener(DrawerLayout.DrawerListener)для додавання слухача та removeDrawerListener(DrawerLayout.DrawerListener)видалення зареєстрованого слухача.


18
Де нам видалити слухач ящиків і чи це це потрібно?
портфоліо

@portfoliobuilder Це залежить. Взагалі, це не обов’язково. Якщо встановити його onCreate()і повернути екран, вся активність буде відтворена, а новий слухач встановлений. Більш складні випадки слід вирішувати з думкою, що (ймовірно) не потрібно мати більше одного слухача DrawerLayout.
Джонні П'ять

29

Замініть setDrawerListener

drawerLayout.setDrawerListener(actionBarDrawerToggle);

з addDrawerListener

drawerLayout.addDrawerListener(actionBarDrawerToggle);

приклад

  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

Я думаю, я відповім на своє запитання. Останні navigationViewвиробляють його за замовчуванням android:layout_heightмайже 18dpпри виборі "wrap_content". Отже, ви повинні вибрати те, android:layout_heightщо хочете для свого, navigationViewабо просто зробити 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>

У будь-якому разі висота автоматично збільшується, коли ви додаєте елемент у навігаційну скриньку.

Нарешті, Використовуйте addDrawerListener()замість того, setDrawerListener()як сказав Луксі Лю.


6
бо це не моє головне питання. ти не бачиш? Будь ласка, прочитайте мою проблему раніше ... Це не лише застаріла річ,
David Glorioso

7
Тоді, можливо, виправте заголовок свого питання
Шарік Абдулла
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.