Android 如何在 BottomNavigationView 中隐藏一个按钮

How to hide one button from BottomNavigationView in Android

我将底部导航栏添加到我的应用程序中,它工作正常,但我尝试在 if 条件下隐藏一项或一个按钮,但我尝试这样做但没有成功。

如果 if(block.equals("3")) 我需要做到这一点,所以我会看到所有底部导航栏..但如果它等于任何其他数字,则有一个按钮将被隐藏,我会可以看到其他按钮。

这个按钮我需要它隐藏case R.id.nav_s: selectedFragment = new MainActivity();

我这样试过但不行case R.id.nav_s: new MainActivity().setMenuVisibility(false);

这是我的代码:

public class NafMaintest extends AppCompatActivity {
    String block;
    SessionManager sessionManager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_naf_main);
        sessionManager = new SessionManager(this);
        sessionManager.checkLogin();
        HashMap<String, String> user = sessionManager.getUserDetail();
        block = user.get(sessionManager.blook);

        BottomNavigationView bottomNav = findViewById(R.id.bottom_navigation);

        if(block.equals("3")){
            BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottom_navigation);
            bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
                @Override
                public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
                    Fragment selectedFragment = null;
                    switch (menuItem.getItemId()) {
                        case R.id.nav_home:
                            selectedFragment = new HomeFragment();
                            break;
                        case R.id.nav_favorites:
                            selectedFragment = new FragmentFavorites();
                            break;
                        case R.id.nav_search:
                            selectedFragment = new FragmentSearch();
                            break;
                        case R.id.nav_s:
                            selectedFragment = new MainActivity();
                            break;
                    }
                    getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                            selectedFragment).commit();
                    return true;
                    //  return false;
                }
            });
        }else {
            BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottom_navigation);
            bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
                @Override
                public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
                    Fragment selectedFragment = null;
                    switch (menuItem.getItemId()) {
                        case R.id.nav_home:
                            selectedFragment = new HomeFragment();
                            break;
                        case R.id.nav_favorites:
                            selectedFragment = new FragmentFavorites();
                            break;
                        case R.id.nav_search:
                            selectedFragment = new FragmentSearch();
                            break;
                        case R.id.nav_s:
                            new MainActivity().setMenuVisibility(false);//this is I need make it hide  if block not equals("3")
                            break;
                    }
                    getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                            selectedFragment).commit();
                    return true;

                }
            });
        }


        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                    new FragmentFavorites()).commit();
        }
    }



}

知道解决方法的朋友帮帮我

要将项目添加到 NavigationView 菜单,请使用 bottomNavigationView.getMenu().add(),要删除项目,请使用 bottomNavigationView.getMenu().removeItem()

要在您的代码中应用它:

public class NafMaintest extends AppCompatActivity {
    String block;
    SessionManager sessionManager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_naf_main);
        sessionManager = new SessionManager(this);
        sessionManager.checkLogin();
        HashMap<String, String> user = sessionManager.getUserDetail();
        block = user.get(sessionManager.blook);

        BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottom_navigation);
        bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
                Fragment selectedFragment = null;
                switch (menuItem.getItemId()) {
                    case R.id.nav_home:
                        selectedFragment = new HomeFragment();
                        break;
                    case R.id.nav_favorites:
                        selectedFragment = new FragmentFavorites();
                        break;
                    case R.id.nav_search:
                        selectedFragment = new FragmentSearch();
                        break;
                    case R.id.nav_s:
                        selectedFragment = new MainActivity();
                        break;
                }
                getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                        selectedFragment).commit();
                return true;
                //  return false;
            }
        });

        if(block.equals("3")){
            if (bottomNavigationView.getMenu().findItem(R.id.nav_s) == null)
                bottomNavigationView.getMenu().add(0, R.id.nav_s, 2, "Title"); // 2 is item order in the menu

        }else {
            if (bottomNavigationView.getMenu().findItem(R.id.nav_s) != null)
                bottomNavigationView.getMenu().removeItem(R.id.nav_s);
        }


        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                    new FragmentFavorites()).commit();
        }
    }


}