Search code examples
androidbottomnavigationviewandroid-menu

How to hide one button from BottomNavigationView in Android


I add to my app Bottom Navigation Bar it work fine but I try to make one item or one button hide with if condition I try to do it but didn't work.

I need make it if if(block.equals("3")) so I will see all Bottom Navigation Bar .. but If it equals any other number there are one button will be hide and I will can see other buttons.

This button I need it hide case R.id.nav_s: selectedFragment = new MainActivity();

I try like that but not work case R.id.nav_s: new MainActivity().setMenuVisibility(false);

This is my code:

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();
        }
    }



}

Anyone know the solution help me


Solution

  • To add items to NavigationView menu use bottomNavigationView.getMenu().add(), and to remove items use bottomNavigationView.getMenu().removeItem()

    To apply that in your code:

    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();
            }
        }
    
    
    }