Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 596
#1

NavigationView выделить выбранный элемент - Программирование Android

11.10.2015, 17:13. Просмотров 298. Ответов 0
Метки нет (Все метки)

Здравствуйте!
Никак не пойму, как в NavigationView выделить пункт меню.
Java
1
menuItem.setChecked(true);
doesn't work.

Меню строится программно, т.к. заранее неизвестно количество элементов. Вот сам код:
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
public class NavigatorFragment extends Fragment {
    //private static final String TAG = NavigatorFragment.class.getSimpleName();
    private long[] timetableIds;
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        final MainActivity activity = (MainActivity) getActivity();
        //Inflate layout
        final NavigationView view = (NavigationView)inflater.inflate(R.layout.navigator, null);
        view.setItemIconTintList(null);
        final Menu menu = view.getMenu();
        createMenu(menu);
        view.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(MenuItem menuItem) {
 
                if(menuItem.getGroupId() == R.id.timetable_menu) {
                    final DatabaseHandler db = new DatabaseHandler(getContext());
                    db.openReadable();
                    final Table.Timetable t = db.getTimetable(timetableIds[menuItem.getOrder()]);
                    db.close();
                    activity.onTimetableSelected(t);
                    menuItem.setChecked(true); //Здесь нужно выделить только что нажатый пункт меню
                } else {
 
                    switch (menuItem.getItemId()) {
//Открываем соответствующие активити приложения
                    }
                }
 
                return false;
            }
        });
        return view;
    }
 
    private void createMenu(final Menu menu) {
        final DatabaseHandler db = new DatabaseHandler(getActivity());
        db.openReadable();
        final List<Table.Timetable> ts = db.getTimetables();
        db.close();
 
        timetableIds = new long[ts.size()];
        final Drawable baseIcon = ContextCompat.getDrawable(
                getContext(),
                R.drawable.sh_filled_circle
        );
 
        for(int i = 0; i < ts.size(); ++i) {
            final Table.Timetable t = ts.get(i);
            final MenuItem item = menu.add(R.id.timetable_menu, Menu.NONE, i, t.getTitle());
            final GradientDrawable icon = (GradientDrawable)baseIcon.getConstantState()
                    .newDrawable().mutate();
            icon.setColor(t.getColor());
            item.setIcon(icon);
            timetableIds[i] = t.getId();
        }
 
        int order = ts.size();
 
        final MenuItem miSubjects = menu.add(R.id.navigation_menu,
                R.id.action_subjects,
                order,
                R.string.action_subjects);
        miSubjects.setIcon(ContextCompat.getDrawable(getContext(), R.drawable.ic_labels_dark_24));
 
        final MenuItem miTeachers = menu.add(R.id.navigation_menu,
                R.id.action_teachers,
                ++order,
                R.string.action_teachers);
        miTeachers.setIcon(ContextCompat.getDrawable(getContext(), R.drawable.ic_group_dark_24));
 
        final MenuItem miTimetables = menu.add(R.id.navigation_menu,
                R.id.action_timetables,
                ++order,
                R.string.action_timetables);
        miTimetables.setIcon(ContextCompat.getDrawable(getContext(), R.drawable.ic_event_dark_24));
 
        final MenuItem miAbout = menu.add(R.id.navigation_menu,
                R.id.action_about,
                ++order,
                R.string.action_about);
        miAbout.setIcon(ContextCompat.getDrawable(getContext(), R.drawable.ic_help_dark_24));
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.10.2015, 17:13     NavigationView выделить выбранный элемент
Посмотрите здесь:

Вывести выбранный элемент ListView в Toast? - Программирование Android
Вот так вывожу массив в ListView String comp = {&quot;text1&quot;,&quot;text2&quot;,&quot;text3&quot;}; ListView lvMain = (ListView) findViewById(R.id.listView1);...

NavigationView с GridView - Программирование Android
Здравствуйте! Обучаюсь на курсах по Java и параллельно на Android. Задали сделать простенькое приложенbt для Android, решил сделать...

NavigationView на фрагментах - Программирование Android
Всем привет! Нужен совет. Задача банальная. Приложение с NavigationView + Toolbar, доступ к которому должен быть с любой активити в...

Как поместить Switch в NavigationView? - Программирование Android
Как поместить Switch в NavigationView? Пробовал поместить в меню NavigationView,но ничего не отображается activity_maps_drawer &lt;?xml...

Анимация NavigationView - не обрабатываются события от кнопок - Программирование Android
Решил опробовать данное решение.https://github.com/mxn21/FlowingDrawer. Проблема никак не могу обработать события с кнопок. Главное...

Spiner как проверить выбранный пункт - Программирование Android
Здравствуйте, у меня есть Spiner со списком, выбранный элемент задаю TextView-у но не как не получается сравнить выбранный элемент с...

выделить область - Программирование Android
подскажите, можно ли выделить область на лаяуте, и вывода сообщения выше него? допустим нужна область размером 10 на 10, далее при клике...

Выделить подстроку с конца - Программирование Android
У меня есть String который содержит много символов и мне нужно выделить символы или подстроку начиная с конца строки String и до символа...

Выделить строку кастомного списка при нажатии на нее - Программирование Android
Имеется кастомный ListView, строки у которого выводятся через TextView. Требуется при нажатии на строку списка выделять ее жирным. ...

Toggle Button - Как правильно выделить нажатую кнопку цветом. Стилями или? - Программирование Android
Toggle Button в листенере просто присвоить цвет - красный или как то другим свойством в Properties? Сейчас меняется только надпись ON...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru