onCreateOptionsMenu无法正常工作

时间:2012-11-06 09:13:06

标签: android android-menu

我有onCreateOptionsMenu方法的这个反复出现的问题。我设置了它,因此根据某些SharedPreferences的值启用或禁用选项,但由于某种原因,第一次打开菜单时它不能正常工作,应该禁用的选项是启用,反之亦然。如果我关闭它并重新打开它,它可以正常工作。

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

随后在每个菜单键按下几秒钟后拍摄这两张照片。 First menu key press, WRONG Second menu key press, RIGHT

第一个是错误的,它应该看起来像第二个。

1 个答案:

答案 0 :(得分:0)

我通过将查询返回的默认值更改为SharedPreferences对象来修复它,但我不知道实际发生了什么。