2016-10-28 2 views
0

저는이 문제에 대해 지금 당장 붙어 있습니다. 내 코드에는 검색 메뉴 항목을 표시하고 싶지 않은 조각이 있습니다. 나는 그런주 활동에서 setVisible (true)을 수행 할 때 조각에 숨겨진 MenuItem이 표시되지 않습니다.

@Override 
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
     super.onCreateOptionsMenu(menu, inflater); 
     this.menu = menu; 
     MenuItem search = menu.findItem(R.id.action_search); 
     search.setVisible(false); 
    } 

이 예상대로 정확하게 작동하고 항목을 숨 깁니다 onCreate

setHasOptionsMenu(true); 

내부 조각

안에이 작업을 수행 할 것을 달성하기 위해. 내가 눌러 다시 수행 할 때 이제 주요 활동의 오 nBackPressed()이라고하고 나는이

@Override 
public void onBackPressed() { 

    // code skipped 
    invalidateOptionsMenu(); 
} 

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.menu_main, menu); 

     item = menu.findItem(R.id.action_search); 
     item.setVisible(true); 

     //code skipped 
} 

onCreateOptionsMenu 기능은 다음과 같다 주요 활동 내부의 onCreateOptionsMenu를 호출 할 불행히도 menuItem은 여전히 ​​숨겨져 있으며 검색 메뉴를 볼 수 없습니다.

누가 도움을 줄 수 있습니까? 그게 무슨 문제 일 수 있습니까? 미리 감사드립니다 !!

답변

1

onCreateOptionsMenu 메서드는 작업이 만들어 지거나 (조각) 호출 될 때만 호출됩니다. onPrepareOptionsMenu을 사용하여 메뉴 항목의 표시 여부를 설정하십시오. invalidateOptionsMenuonCreateOptionsMenu이 아니라 onPrepareOptionsMenu입니다.

관련 문제