BottomNavigationView - 如何获取选定的菜单项?
Posted
技术标签:
【中文标题】BottomNavigationView - 如何获取选定的菜单项?【英文标题】:BottomNavigationView - How to get selected menu item? 【发布时间】:2017-05-18 11:06:03 【问题描述】:我使用了 BottomNavigationView 来切换片段。如何获取当前选择的菜单项,以防止重新打开片段?
BottomNavigationView bottomNavigationView = (BottomNavigationView)
findViewById(R.id.bottom_navigation);
bottomNavigationView.setOnNavigationItemSelectedListener(
new BottomNavigationView.OnNavigationItemSelectedListener()
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item)
switch (item.getItemId())
case R.id.action_1:
// open fragment 1
break;
case R.id.action_2:
// open fragment 2
break;
case R.id.action_3:
// open fragment 3
break;
return false;
);
【问题讨论】:
您能否更清楚地了解“防止重新打开片段”?您对导航项(菜单)点击有何期望? 【参考方案1】:先获取选中项,然后getMenu().findItem(int itemId)
bottomNavigationView.getMenu().findItem(bottomNavigationView.getSelectedItemId())
【讨论】:
【参考方案2】:解决方案:
private int getSelectedItem(BottomNavigationView bottomNavigationView)
Menu menu = bottomNavigationView.getMenu();
for (int i = 0; i < bottomNavigationView.getMenu().size(); i++)
MenuItem menuItem = menu.getItem(i);
if (menuItem.isChecked())
return menuItem.getItemId();
return 0;
【讨论】:
【参考方案3】:使用getSelectedItemId
获取当前选中的菜单项ID:
int selectedItemId = bottomNavigationView.getSelectedItemId();
MenuItem selectedItem = bottomNavigationView.getMenu().findItem(selectedItemId);
android 支持库 25.3.0 开始提供此方法。
【讨论】:
【参考方案4】:我认为检查上一项是否为下一项的最简单解决方案是:
BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottom_navigation);
bottomNavigationView.setOnNavigationItemSelectedListener(
new BottomNavigationView.OnNavigationItemSelectedListener()
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item)
final int previousItem = bottomNavigationView.getSelectedItemId();
final int nextItem = item.getItemId();
if (previousItem != nextItem)
switch (nextItem)
case R.id.action_1:
// open fragment 1
break;
case R.id.action_2:
// open fragment 2
break;
case R.id.action_3:
// open fragment 3
break;
return true;
);
请注意,不需要迭代,onNavigationItemSelected
返回true
,因为函数会消耗事件。
我希望它对某人有所帮助。
【讨论】:
以上是关于BottomNavigationView - 如何获取选定的菜单项?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 BottomNavigationView 的片段上打开搜索界面?
如何禁用 BottomNavigationView 移位模式?
如何在Android的BottomNavigationView中设置填充项
如何将 BottomNavigationView 与 NavigationView 一起对齐到 Activity 的底部?