使用onPrepareOptionsMenu代替onCreateOptionsMenu的我有一個問題在ActionBar
設立一些片段菜單項和我找到了一種方法來解決這個問題,但我不明白爲什麼它的工作。在片段
我想改變的知名度菜單項之後我誇大它從菜單XML文件中onCreateOptionsMenu
方法。該代碼似乎工作正常,但沒有明顯的影響。我解決了在onCreateOptionsMenu
方法中擴大菜單的問題,但是在onPrepareOptionsMenu
方法中改變了它的可見性。
我想知道的是爲什麼改變onCreateOptionsMenu
知名度不工作。
我能做些什麼onPrepareOptionsMenu
我不能在onCreateOptionsMenu
做什麼?
這裏有什麼樣的模式嗎?
謝謝!
下面是相關的代碼,以防萬一:
public class MyFragment extends Fragment {
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.my_menu, menu);
// This does not work, compiles and runs fine, but has no visible effect
MenuItem someMenuItem = menu.findItem(R.id.some_menu_item);
someMenuItem.setVisible(false);
}
@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
// This does work
MenuItem someMenuItem = menu.findItem(R.id.some_menu_item);
someMenuItem.setVisible(false);
}
}
我不知道,但[文件](http://developer.android.com/reference/android/app/Activity。 html#onCreateOptionsMenu(android.view.Menu))說:「_ ...要每次顯示菜單時更新菜單,請參閱[onPrepareOptionsMenu(Menu)](http://developer.android.com/reference/android/app/ Activity.html#onPrepareOptionsMenu(android.view.Menu))._「 – 2012-07-07 15:02:07
感謝您的評論! 這裏的東西是我不需要'每次顯示都更新它'(它一直顯示,沒有子菜單),我只想配置菜單一次,創建/膨脹時,這就是全部。好吧,在我的情況下看起來可能是一樣的,但我的問題的關鍵是要明白爲什麼它會像這樣工作。 爲什麼每次顯示菜單時都必須「重新配置」菜單,而只能在創建菜單時才執行一次菜單? – 2012-07-07 15:13:30
我理解並同意應該是一個選項。但在我看來,我認爲這是Android的工作方式。在某些情況下,您可以使用xml屬性對菜單的屬性進行硬編碼。 – 2012-07-07 17:01:46