2017-04-11 6 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); 
} 

할 그리고 if (!mapMall.isEmpty() || !mapGender.isEmpty() || !mapCategory.isEmpty()) 내가 작업 메뉴를 표시해야하는 경우이 내가 숨길해야하는 경우/디스플레이 옵션 메뉴

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

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

하고 else 부분에 난 숨길 필요합니다 옵션 메뉴! 내가 어떻게 이걸 얻을 수 있니? 당신은 옵션 메뉴를 무효화하는 데 사용할 나중에 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); 
} 

답변

2

전화 invalidateOptionsMenu().

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

mResetButton.setVisibility (true)의 'setVisibility (boolean)'메서드를 해결할 수 없습니다. – vm345

+0

그것은 나를 위해 작동 – vm345

+0

내가 부울 Isreset = 거짓; true로 설정하고 menu.findItem (R.id.action_reset) .setVisibility (true); 및 menu.findItem (R.id.action_reset) .setVisibility (false); – vm345

0

숨기기 및 표시 옵션 메뉴