Android 导航抽屉动态菜单项Id问题
我正在尝试在导航抽屉中设置动态菜单项。我成功了。但是,当有人点击菜单项时,如何调用意图传递和一些数据呢 这是我设置动态菜单项的代码Android 导航抽屉动态菜单项Id问题,android,dynamic,navigation,navigation-drawer,Android,Dynamic,Navigation,Navigation Drawer,我正在尝试在导航抽屉中设置动态菜单项。我成功了。但是,当有人点击菜单项时,如何调用意图传递和一些数据呢 这是我设置动态菜单项的代码 private void addMenuItemInNavMenuDrawer() { NavigationView navView = (NavigationView) findViewById(R.id.nav_view); Menu menu = navView.getMenu(); for (int i = 0; i < ca
private void addMenuItemInNavMenuDrawer() {
NavigationView navView = (NavigationView) findViewById(R.id.nav_view);
Menu menu = navView.getMenu();
for (int i = 0; i < catTitleList.size(); i++) {
menu.add(Menu.NONE, Integer.parseInt(catIdList.get(i)), Menu.NONE, catTitleList.get(i));
}
navView.invalidate();
}
您可以使用与资源定义的菜单项完全相同的方法来执行此操作。你有什么特别的问题?你的兽医有多活跃?你怎么知道列表中的哪个项目会有什么目的?@MikeM。问题是,我在catTitleList()中获得了动态类别标题。因为我必须设置与我的类别标题和Id相同的菜单。我正在为菜单设置动态标题和ID,如您在AddMenuItemNavMenuDrawer()中看到的。问题是如何为具有动态id的动态manu执行onNavigationItemSelected(MenuItem项)。我不确定是否正确理解该问题,但您不一定需要将类别id用于菜单项id。您可以简单地将索引用作菜单id–即,
menu.add(menu.NONE,I,…)
–然后在onNavigationItemSelected()
中,您可以使用item.getItemId()
从列表中获取实际的类别ID及其标题。除此之外,我要提到的是,如果您创建一个带有ID和标题字段的Category
类,并保留一个列表,那么处理这些事情可能会更容易。不过,这与您当前的问题并不相关
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
NavigationView nv = findViewById(R.id.nav_view);
Menu m = nv.getMenu();
int id = item.getItemId();
int catId = Integer.parseInt(catIdList.get(0));
if (id == R.id.nav_ebook) {
if (!m.findItem(catId).isVisible()) {
m.findItem(catId).setVisible(true);
} else if (m.findItem(catId).isVisible()) {
m.findItem(catId).setVisible(false);
}
} else (id == CatId) {
String tag = viewAll1.getTag().toString();
Intent i = new Intent(this, AllSubCategory.class);
i.putExtra("ID", tag);
startActivity(i);
}
return true;
}