如果我将自定义项添加到NavigationView
菜单中,请执行以下操作:
Menu menu = navigationView.getMenu();
MenuItem item = menu.add("Item 1");
如何将数据设置为项目(如对象),以便在单击/选中时,我可以将该数据传递给它打开的活动?
答案 0 :(得分:2)
您无法在菜单项中设置/添加数据。通过查看add()
itemId
方法,可以看出您可以设置:
groupId - int:此项应属于的组标识符。这可用于定义批次状态更改的项目组。如果一个项目不在一个组中,通常使用NONE。
itemId - int:唯一商品ID。如果您不需要唯一ID,请使用NONE。
订单 - int:商品的订单。如果您不关心订单,请使用NONE。见getOrder()。
title - CharSequence:要为项目显示的文本。
因此:
您需要设置onNavigationItemSelected()
并处理@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;
}
iostream
答案 1 :(得分:0)
这对我来说没有意义。 MenuItem类仅包含与菜单项相关的属性。您不能将其他对象放在MenuItem实例中。看一下MenuItem类:
您可以使用存储库模式获取有关新活动的所需数据或在当前活动上加载对象并使用intent传递给新活动,只需创建一个Bundle
并将可序列化或可分割的对象放在其上。您可以在处理onNavigationItemSelected(MenuItem item)