动态创建的菜单项位置在导航抽屉中提供相同的项目 ID

Dynamically created menu items position giving same item id in navigation drawer

我使用以下代码在导航抽屉中动态创建了菜单项。

   Menu m;
   navigationView = (NavigationView) findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);
        m = navigationView.getMenu();
        m.add("menu item 1");
        m.add("menu item 2");

工作正常,正在动态创建项目。但是当我想获得点击菜单项的位置时,每次使用以下代码都会显示“0”。

@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
    // Handle navigation view item clicks here.
    int id = item.getItemId();


    Toast.makeText(order.this , "pos is : " + id  ,Toast.LENGTH_LONG).show();

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    drawer.closeDrawer(GravityCompat.START);
    return true;
}

如有任何帮助,我们将不胜感激。请告诉我哪里错了。

谢谢!

使用带有更多参数的Menu.add()

来自文档

https://developer.android.com/reference/android/view/Menu.html#add(int,int,int,java.lang.CharSequence)

使用:

MenuItem add (int groupId, 
                int itemId, 
                int order, 
                CharSequence title)

在您的代码中,为每个 menuItem

赋予 Unique itemId
menu.add(0, 0, 0, "menu item 1")
menu.add(0, 1, 0, "menu item 2")
menu.add(0, 2, 0, "menu item 3")