以编程方式将 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);
}
我已通过编程方式将项目添加到 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);
}