以编程方式将 MenuItem 添加到 NavigationView - 项目未选中

Add MenuItem to NavigationView programmatically - item not checked

我已通过编程方式将项目添加到 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 添加相同的项目,一切正常。

当您以编程方式添加项目时,未设置项目的可检查标志。您应该只添加这一行:

menuItem.setCheckable(true);

将项目添加到菜单后。

正如@Oncky 回答的那样,您可以像这样在 menuItem 上设置 Checkable:

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