hide/show 单击按钮时的选项菜单

hide/show options menu when clicking buttons

我在片段中使用了一些按钮。当我检查这些按钮时,应显示选项菜单。当我取消选中它时,它应该隐藏选项菜单。我应该怎么做

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

这是我需要hide/display选项菜单

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

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

if (!mapMall.isEmpty() || !mapGender.isEmpty() || !mapCategory.isEmpty()) 我需要显示操作菜单并且在 else 部分我需要隐藏选项菜单!我怎样才能做到这一点?

为隐藏和显示选项菜单调用 invalidateOptionsMenu()

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

您可以保留 Menu 对象的实例,稍后使用它使选项菜单无效。

private Menu menu;


    @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);
        this.menu = menu;
        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);
    } 

使用 menu 对象然后切换选项菜单。

private void checkSelected() { 
    if (!mapMall.isEmpty() || !mapGender.isEmpty() || !mapCategory.isEmpty()) { 
        footerTab.setVisibility(View.VISIBLE);
        menu.findItem(R.id.action_reset).setVisibility(View.VISIBLE);

    } else { 
        footerTab.setVisibility(View.GONE);
        menu.findItem(R.id.action_reset).setVisibility(View.GONE);
    } 
}