2016-10-28 29 views
0

我一直在這個問題上停留了很長一段時間。在我的代碼中,我有一個片段,我不想顯示搜索菜單​​項。爲了實現這一點我做到這一點的片段在主要活動中執行setVisible(true)時,MenuItem隱藏在片段中不可見

Inside無onCreate

setHasOptionsMenu(true); 

然後

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

這個工程完全按照預期的和隱藏的項目。現在,當我做回按主要活動中的O 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設置菜單項目的可見性。 invalidateOptionsMenu調用onPrepareOptionsMenu,而不是onCreateOptionsMenu

相關問題