Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将数据设置为NavigationView菜单项_Android_Android Menu_Navigation Drawer_Android Navigationview - Fatal编程技术网

Android 将数据设置为NavigationView菜单项

Android 将数据设置为NavigationView菜单项,android,android-menu,navigation-drawer,android-navigationview,Android,Android Menu,Navigation Drawer,Android Navigationview,如果我将自定义项添加到我的NavigationView菜单,如下所示: Menu menu = navigationView.getMenu(); MenuItem item = menu.add("Item 1"); 如何为项目(如对象)设置数据,以便在单击/选择该项目时,我可以将该数据传递给它打开的活动?您不能为菜单项设置/添加数据。通过查看ofadd()方法,可以看到您可以设置: groupId-int:此项应属于的组标识符。这可用于定义批处理状态更改的项目组。如果项目不应在组中,则通

如果我将自定义项添加到我的
NavigationView
菜单,如下所示:

Menu menu = navigationView.getMenu();

MenuItem item = menu.add("Item 1");

如何为项目(如对象)设置数据,以便在单击/选择该项目时,我可以将该数据传递给它打开的活动?

您不能为菜单项设置/添加数据。通过查看of
add()
方法,可以看到您可以设置:

groupId-int:此项应属于的组标识符。这可用于定义批处理状态更改的项目组。如果项目不应在组中,则通常使用“无”

项目ID-int:唯一项目ID。如果不需要唯一ID,请使用“无”

订单-int:项目的订单。如果您不关心订单,请使用NONE。请参阅getOrder()

标题-字符序列:为项目显示的文本

因此:

您需要设置
itemId
并在
onNavigationItemSelected()


这对我来说没有意义。MenuItem类仅保存相对于菜单项的属性。不能将其他对象放在MenuItem实例中。看看MenuItem类:


您可以使用repository模式获取新活动上所需的数据,或者在当前活动上加载对象,并使用intent传递给新活动,只需创建一个
捆绑包
,然后将可序列化或可打包的对象放在上面。当您处理导航项Selected(MenuItem项)

是时,您可以这样做,但如何设置菜单项上的数据,然后在单击时传递给活动?例如,如何在项目上设置
用户
对象,然后在选择该项目时将其发送到活动?在您的示例中,我只能在选中项目时传递数据。我需要的是能够将数据附加到某个项目,然后,在选中时,获取该数据并将其传递给“活动”。除了其id之外,您不会将任何类型的数据设置到菜单项。只能单击这些数据。发生这种情况时,它们调用
onNavigationItemSelected()
方法。现在,您可以通过读取id来确定单击了哪个菜单项,并处理必要的任务。例如,创建
intent
并传递数据,或者执行您想要的任何其他任务。如果“我的许多菜单项”打开相同的活动,但需要传递不同的数据(在本例中为对象)?每个菜单项应具有不同的ID。因此,在
onNavigationItemSelected
方法中有
if
语句。根据单击菜单项的id,将所需数据传递给任何activity@user7556225答案对你有帮助吗?
@Override
public boolean onNavigationItemSelected(MenuItem item) {
    // Handle navigation view item clicks here.

    int id = item.getItemId();

    if (id == R.id.id_of_menu_item_1) {

        // handle intents and passing data

    } else if (id == R.id.id_of_menu_item_2) {

        // handle intents and passing data

    }

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