2017-04-11 1 views
1

J'utilise des boutons dans mes fragments. Lorsque je vérifie ces boutons, le menu des options devrait s'afficher. Et quand je le décoche, il devrait cacher le menu des options. Comment dois-je faire ceMasquer/Afficher les options du menu lorsque vous cliquez sur les boutons

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

Et c'est l'événement que je dois masquer/afficher le menu Options

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

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

Lorsque if (!mapMall.isEmpty() || !mapGender.isEmpty() || !mapCategory.isEmpty()) i besoin d'afficher le menu des actions et dans la partie else i besoin de se cacher menu d'options! Comment puis-je atteindre cet objectif?

Répondre

2

invalidateOptionsMenu() d'appel pour cacher et afficher le menu des options

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

Impossible de résoudre la méthode 'setVisibility (Boolean)' dans mResetButton.setVisibility (true); – vm345

+0

cela fonctionne pour moi – vm345

+0

j'ai changé Boolean Isreset = false; à true et menu.findItem (R.id.action_reset) .setVisibility (true); et menu.findItem (R.id.action_reset) .setVisibility (false); – vm345

0

Vous pouvez garder l'instance de Menu objet et par la suite utiliser pour invalider le menu des options.

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

En utilisant l'objet menu, puis basculez le menu des options.

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