Platformui.getPreferencestore()什么都不存储



我使用PlatformUI来存储我的首选项遇到了麻烦。我想创建一个peferencesservice,以在我的插件中访问和编辑首选项。我正在从Activator打电话给我服务的初始化功能,但这没有影响。这是我的功能:

public static void initPreferences() throws NullContributionException, CoreException {
    final IPreferenceStore store = PlatformUI.getPreferenceStore();
    for (String languageId : LanguageService.getLanguagesIds()) {
        store.setDefault(languageId, true);
        for (CheckerContainer checker : CheckerService.getCheckers(languageId)) {
            String checkerPreferenceId = getPreferencesId(languageId, checker.getId());
            store.setDefault(checkerPreferenceId, true);
            store.setDefault(checkerPreferenceId + PREF_SEVERITY_ATTRIBUTE, "Error");
        }
    }
    store.needsSaving();
}

我是从激活器中调用它的:

@Override
public void start(final BundleContext bundleContext) throws Exception {
    // Initialize all preferences
    UserPreferencesService.initPreferences();
    Activator.context = bundleContext;
}

均使用debugger和非常fing .metadata prefs文件均可验证,表明不会考虑通过Eclipse进行修改。

是不良的做法吗?我正在编辑一个这样做的旧3.4蚀插件,但我找不到无法使用偏好的区别。

感谢您的阅读,也许是您的回答,Waldo

是的,这是不好的做法。此优先商店仅适用于工作台。

您应该使用特定于插件的IPreferenceStore。如果您的激活剂扩展了AbstractUIPlugin,则可以使此调用AbstractUIPlugin.getPreferenceStore方法。

要在您的优先商店中初始化默认值,您应该使用org.eclipse.core.runtime.preferences扩展点来定义initializer类,其中设置默认值。

注意:needsSaving方法只是返回对还是错,告诉您是否已更改了首选项 - 它没有设置该标志或保存。

还请注意,默认值未写入首选项文件。

最新更新