1

我有这个onCreateOptionsMenu方法反复出现的问题。我已经设置好了,所以它根据 some 的值启用或禁用选项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);
    }
}

这两张照片是在每次按下菜单键之间的几秒钟后拍摄的。 第一次按菜单键,错误 第二个菜单键按下,RIGHT

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

4

1 回答 1

0

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

于 2012-11-06T09:39:45.280 回答