2017-04-11 16 views
1

私のフラグメントにはいくつかのボタンがあります。これらのボタンをチェックすると、オプションメニューが表示されます。チェックを外すと、オプションメニューが表示されなくなります。私はアクションメニューを表示する必要があるとelse部分で私は非表示にする必要がある場合if (!mapMall.isEmpty() || !mapGender.isEmpty() || !mapCategory.isEmpty())私はこのボタンをクリックしたときのオプションメニューの表示/非表示

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

どのように行う必要がありますオプションメニュー!どうすればこれを達成できますか?非表示と表示オプションメニューの

答えて

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

オブジェクトを使用して、オプションメニューを切り替えます。

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); 
    } 
} 
関連する問題