Android 底部导航视图启用单击禁用检查

Android 底部导航视图启用单击禁用检查,android,android-layout,android-view,android-menu,bottomnavigationview,Android,Android Layout,Android View,Android Menu,Bottomnavigationview,我使用的是带有5个项目、4个片段和1个活动的BottomNavigationView,如下图所示 当点击任何片段时,我希望它正常运行,点击和选中,但当点击“+”项时,我正在打开一个活动,但我不希望它被选中,所以我希望它是可点击的,这样它就可以打开活动,但我不希望被选中,因为当用户从活动返回时,将看到它被选中,即使它是错误的选中项目。 我该怎么做 这是我的密码: bottomNavigationView = findViewById(R.id.bottom_nav_view); bottomNa

我使用的是带有5个项目、4个片段和1个活动的BottomNavigationView,如下图所示

当点击任何片段时,我希望它正常运行,点击
和选中
,但当点击“+”项时,我正在打开一个活动,但我不希望它被选中
,所以我希望它是
可点击的
,这样它就可以打开活动,但我不希望被选中
,因为当用户从活动返回时,将看到它被选中,即使它是错误的选中项目。
我该怎么做

这是我的密码:

bottomNavigationView = findViewById(R.id.bottom_nav_view);
bottomNavigationView.setOnNavigationItemSelectedListener(this);


查看底部导航侦听器的源代码,如果不希望将项显示为选中项,则只需返回false

 /**
     * Listener for handling selection events on bottom navigation items.
     */
    public interface OnNavigationItemSelectedListener {

        /**
         * Called when an item in the bottom navigation menu is selected.
         *
         * @param item The selected item
         *
         * @return true to display the item as the selected item and false if the item should not
         *         be selected. Consider setting non-selectable items as disabled preemptively to
         *         make them appear non-interactive.
         */
        boolean onNavigationItemSelected(@NonNull MenuItem item);
    }
因此,您只需在
case R.id.add_nav_menu:
中返回false,它就可以工作。

用户API,以便处理菜单项的可检查状态


    MenuItem menuItem = navigation.getMenu().getItem(1);
    menuItem.setCheckable(false);

试着这样做:

@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
int id = menuItem.getItemId();
Fragment fragment = null;
switch (id) {
    case R.id.home_nav_menu:
        fragment = new HomeFragment();
        break;
    case R.id.inbox_nav_menu:
        fragment = new InboxFragment();
        break;
    case R.id.add_nav_menu:
  menuItem.setCheckable(false);
        Intent intent = new Intent(this, AddActivity.class);
        startActivity(intent);
        return true;
    case R.id.history_nav_menu:
        fragment = new HistoryFragment();
        break;
    case R.id.profile_nav_menu:
        fragment = new ProfileFragment();
        break;
}
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_place_holder, fragment).commit();
return true;
}

在这里发布你的代码,告诉我们你已经尝试了什么far@Quicklearner我的BottomNavigationView工作正常,没有任何问题,但我找不到任何方法来禁用它,使其无法获得焦点或检查,因此我没有试图禁用iti的代码我明白,您可以添加代码吗,这样我们就可以看到它并在it@QuicklearnerDoneinside case R.id.add_nav_菜单:menuItem.setCheckable(false);太简单了,太好了,非常感谢你。看@YousefGamal如果你用问题贴代码,你会很快得到答案:)@Quicklearner是的,这是我刚刚学到的东西,谢谢你^_^
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
int id = menuItem.getItemId();
Fragment fragment = null;
switch (id) {
    case R.id.home_nav_menu:
        fragment = new HomeFragment();
        break;
    case R.id.inbox_nav_menu:
        fragment = new InboxFragment();
        break;
    case R.id.add_nav_menu:
  menuItem.setCheckable(false);
        Intent intent = new Intent(this, AddActivity.class);
        startActivity(intent);
        return true;
    case R.id.history_nav_menu:
        fragment = new HistoryFragment();
        break;
    case R.id.profile_nav_menu:
        fragment = new ProfileFragment();
        break;
}
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_place_holder, fragment).commit();
return true;
}