Search code examples
androidandroid-fragmentsandroid-optionsmenu

hide/show options menu when clicking buttons


I'm using some buttons in my fragments. When i checks those buttons then options menu should display. And when i uncheck it it should hide options menu. How should i do this

 @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setHasOptionsMenu(true);
    mLocation = getArguments().getString(Beco.EXTRA_LOCATION);
    listMalls = temporaryModelCache.getDealData().getFacets().getArea();
    listCategories = temporaryModelCache.getDealData().getFacets().getCategories();
    listGender = temporaryModelCache.getDealData().getFacets().getAgeGroup();
    try {
        MainActivity activity = (MainActivity) getActivity();
        if (activity != null) activity.hideBottomBar();
    } catch (Exception ignored) {

    }
}

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    menu.clear();
    inflater.inflate(R.menu.forgot_password, menu);
    mResetButton = menu.findItem(R.id.action_reset);
    super.onCreateOptionsMenu(menu, inflater);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int itemId = item.getItemId();
    switch (itemId) {
        case  R.id.action_reset:
            Log.d(TAG, "onClick");
            resetFilter();
            return true;
    }

    return super.onOptionsItemSelected(item);
}

And this is the event that i need to hide/display options menu

private void checkSelected() {
    if (!mapMall.isEmpty() || !mapGender.isEmpty() || !mapCategory.isEmpty()) {
        footerTab.setVisibility(View.VISIBLE);

    } else {
        footerTab.setVisibility(View.GONE);
    }
}

When if (!mapMall.isEmpty() || !mapGender.isEmpty() || !mapCategory.isEmpty()) i need to display actions menu and in the else part i need to hide options menu ! How can i achieve this?


Solution

  • call invalidateOptionsMenu() for hide and show option menu

     Boolean Isreset= false;
    
    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        menu.clear();
        inflater.inflate(R.menu.forgot_password, menu);
        mResetButton = menu.findItem(R.id.action_reset);
        if(!Isreset)
        {
            mResetButton.setVisibility(true);
        }else{
            mResetButton.setVisibility(false);
        }
        super.onCreateOptionsMenu(menu, inflater);
    }
    
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int itemId = item.getItemId();
        switch (itemId) {
            case  R.id.action_reset:
                Log.d(TAG, "onClick");
                resetFilter();
                Isreset= true;
                invalidateOptionsMenu();
    
                return true;
        }
    
        return super.onOptionsItemSelected(item);
    }