Добавете 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)


Когато добавяте елемент програмно, флагът за проверка на елемента не е зададен. Трябва просто да добавите този ред:

menuItem.setCheckable(true);

след добавяне на елемент към менюто.

person Oncky    schedule 20.01.2016

Както @Oncky отговори, можете просто да зададете Checkable на вашия menuItem по следния начин:

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