1
我在onCreateOptionsMenu
方法中遇到了此問題。我已經設置了它,因此它根據某些SharedPreferences
的值啓用或禁用了選項,但出於某種原因,第一次打開菜單時它不能正常工作,應禁用的選項已啓用,另一個方式。如果我關閉並重新打開它,它可以正常工作。onCreateOptionsMenu無法正常工作
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
menuConfig(menu);
return true;
}
@Override
public boolean onPrepareOptionsMenu (Menu menu) {
menuConfig(menu);
return true;
}
public void menuConfig(Menu menu){
menu.getItem(getResources().getInteger(R.integer.MENU_ABOUT)).setEnabled(true);
if (preferences.getBoolean(getString(R.string.PREFS_STARTED), false)){
menu.getItem(getResources().getInteger(R.integer.MENU_START)).setEnabled(false);
menu.getItem(getResources().getInteger(R.integer.MENU_STOP)).setEnabled(true);
}else{
menu.getItem(getResources().getInteger(R.integer.MENU_START)).setEnabled(true);
menu.getItem(getResources().getInteger(R.integer.MENU_STOP)).setEnabled(false);
}
if(!preferences.getBoolean(getString(R.string.PREFS_STARTED),false) && preferences.getBoolean(getString(R.string.PREFS_FILES_CREATED),false)){
menu.getItem(getResources().getInteger(R.integer.MENU_DELETE)).setEnabled(true);
menu.getItem(getResources().getInteger(R.integer.MENU_SET_ID)).setEnabled(true);
}
else{
menu.getItem(getResources().getInteger(R.integer.MENU_DELETE)).setEnabled(false);
menu.getItem(getResources().getInteger(R.integer.MENU_SET_ID)).setEnabled(false);
}
}
這兩個圖片隨後在每個菜單按鍵之間用幾秒鐘時間拍攝。
第一個是錯誤的,它應該看起來像第二個。
我相信這是因爲我在調用menuConfig之前膨脹的事實,但我試圖用相反的方式做它,它崩潰了。 –
我甚至嘗試通過菜單佈局xml強制初始狀態,並且它不起作用,這意味着偏好正在被讀取,但出於某種原因錯誤。 –
即使調用create方法(只發生一次),也無需從onCreateOptionsMenu和onPrepareOptionsMenu調用'menuConfig'作爲prepare方法。所以你可以安全地從create方法中刪除調用。 – Ridcully