我需要以编程方式创建一些首选项页面。当我第一次触发以下代码时,它按预期工作:
IPreferencePage page = new NewPreferencePage(test);
page.setTitle("First Title");
PreferenceManager pm = PlatformUI.getWorkbench().getPreferenceManager();
PreferenceNode node = new PreferenceNode("node." + nodeName, page);
pm.addToRoot(node);
Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow()
.getShell();
PreferenceDialog pd = new PreferenceDialog(shell, pm);
pd.setPreferenceStore(Activator.getDefault().getPreferenceStore());
pd.create();
pd.open();
问题是当我尝试从标准模式(Window - > Preferences)访问首选项时发生错误,并且我创建的节点为null。 此外,当我在2+时间内触发此代码时,会创建一个新节点,并且前一个节点在首选项列表中显示为空行。
任何人都有一些教程或一些详细信息描述如何以编程方式创建。我在网上搜索并尝试了不同的方法,但没有成功。
或者如果有人知道如何在触发菜单时更改标准的PreferenceDialog,我可以尝试其他解决方案。
这个问题与此类似: Eclipse: create preference page programmatically, 但无论如何我无法解决它。
由于
答案 0 :(得分:0)
我遇到了同样的问题,我通过覆盖我的首选项页面中的getPreferenceStore()来推动它,它可以工作。请参阅以下代码:
@Override
public IPreferenceStore getPreferenceStore() {
return MarkerPlugin.getDefault().getPreferenceStore();
}