Программно добавить MenuItem в NavigationView — элемент не отмечен

Я добавил элементы в NavigationView программно:

**HERE ADD ITEMS**    

Menu rightMenu = mRightDrawerView.getMenu();
for (DataParking dataParking : dataParkingList) {   
    MenuItem menuItem = rightMenu.add(dataParking.getTimeParking()); 
}

**HERE ADD CLICK LISTENER**

mRightDrawerView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(MenuItem menuItem) {
            // Select menu
            menuItem.setChecked(true);

            // Closing left_drawer on item click
            mDrawerLayout.closeDrawer(mRightDrawerView);

            return false;
        }
    });

Элементы в навигационном ящике правильно кликабельны, но выбор не является постоянным. Если я добавляю те же элементы через XML, все работает хорошо.


person Simone    schedule 09.10.2015    source источник


Ответы (2)


Когда вы добавляете элемент программно, флаг checkable для элемента не устанавливается. Вы должны просто добавить эту строку:

menuItem.setCheckable(true);

после добавления пункта в меню.

person Oncky    schedule 20.01.2016

Как ответил @Oncky, вы можете просто установить Checkable в свой элемент меню следующим образом:

Menu rightMenu = mRightDrawerView.getMenu();
for (DataParking dataParking : dataParkingList) {   
    MenuItem menuItem = rightMenu.add(dataParking.getTimeParking()).setCheckable(true); 
}
person Reza    schedule 28.03.2016