2017-04-11 133 views
1

我在片段中使用了一些按鈕。當我檢查這些按鈕時,應顯示選項菜單。當我取消選中時,它應該隱藏選項菜單。我應該怎麼做這個單擊按鈕時隱藏/顯示選項菜單

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

而這正是我需要隱藏事件/顯示選項菜單

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一部分,我需要隱藏選項菜單!我怎樣才能做到這一點?

回答

2

調用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); 
} 
+0

無法解析mResetButton.setVisibility(true)中的方法'setVisibility(boolean)'; – vm345

+0

它適用於我 – vm345

+0

我改變了布爾Isreset = false;爲true並且 menu.findItem(R.id.action_reset).setVisibility(true);和menu.findItem(R.id.action_reset).setVisibility(false); – vm345

0

你可以保持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); 
    } 
}