我使用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;
}
});
}
答案 0 :(得分:9)
首先获取所选项目,然后获取all(is.na(y))
[1] TRUE
getMenu().findItem(int itemId)
答案 1 :(得分:6)
解决方案:
dstdir
答案 2 :(得分:1)
使用getSelectedItemId
获取当前选定的菜单项ID:
int selectedItemId = bottomNavigationView.getSelectedItemId();
MenuItem selectedItem = bottomNavigationView.getMenu().findItem(selectedItemId);
此方法已从Android支持库25.3.0开始提供。
答案 3 :(得分:0)
我认为检查上一项是否为下一项的最简单解决方案是:
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
,因为该函数消耗了事件。
我希望它能对某人有所帮助。