Страницы

Поиск по вопросам

четверг, 2 января 2020 г.

Выделение активного пункта в NavigationView

#android #xml


Как выделить активный пункт меню в NavigationView?
Пункты меню запускают Fragment, а сам NavigationView расположен в activity.
NavigationView инициализировал сам, не из стандартного шаблона от Google.
    


Ответы

Ответ 1



navigation = (NavigationView) findViewById(R.id.navigation_view); navigation.getMenu().getItem(0).setChecked(false); navigation.setNavigationItemSelectedListener(new navigation.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(MenuItem menuItem) { int id = menuItem.getItemId(); switch (id) { case R.id.navigation_item: if (menuItem.isChecked()) { menuItem.setChecked(false); } else { menuItem.setChecked(true); } break; //и т.д. } return false; menu xml: ... ....

Ответ 2



Решил добавить ответ так же про Activity. Если используете Activity вместо Fragments в NavigationView, то выделить выбранный пункт меню можно методом setCheckedItem(idMenuItem); При этом, можно сделать отдельный родительский класс с инициализацией NavigationView, в сигнатуру которого из активити-класса можно добавитьid пункта меню. Пример реализации: Метод из родительского Activity: protected void setupNavigationView(int idMenuItem) { initTogle(); navigationView.setCheckedItem(idMenuItem); navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(MenuItem item) { drawerLayout.closeDrawers(); switch (item.getItemId()) { case R.id.nav_menu_sales: startSalesActivity(); break; case R.id.nav_menu_tenders: startTendersActivity(); break; case R.id.nav_menu_shipments: break; } return false; } }); Вызов из нужного Activity: setupNavigationView(R.id.nav_menu_sales); Разметка menu.xml такая же, как в ответе про Фрагменты.

Комментариев нет:

Отправить комментарий