2016-10-28 10 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); 

内部フラグメント

の内側にこれを行うことを達成するために。今私は、主な活動の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を使用して、メニュー項目の表示を設定します。 invalidateOptionsMenuonCreateOptionsMenuではなくonPrepareOptionsMenuとなります。

関連する問題