我的应用程序中的两个视图需要在恢复状态时加载相同的信息。我的想法是,为避免保存两次,让一个视图在init
或createPartControl
中创建另一个视图(如果尚未创建)。但是,
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView(...)
不起作用,因为getActivePage()
返回null
。有可能解决这个问题吗?
答案 0 :(得分:2)
委托经理或服务加载/维护/保存共享状态。这将确保第一次访问初始化您的信息。实例化视图时,只需转到管理器并检索信息即可。如果用户从未实例化您的视图,那么您就不必进行额外的工作。
在一般情况下,您无法在创建/激活另一个视图时创建/实例化一个视图。 Eclipse将不允许它,并将在错误日志中生成错误。
编辑:
我见过的3种标准持久性模式(和/或误用:-)是:
1)让你的插件获得它的状态位置,然后简单地序列化你的状态。 (如果您继承org.eclipse.core.runtime.Plugin
,则免费提供的位置)您可以在激活器stop(BundleContext)
方法中执行此操作。如果您还没有解决方案,可以使用org.eclipse.ui.XMLMemento
之类的类来序列化到XML或从XML序列化。
2)如果您继承org.eclipse.ui.plugin.AbstractUIPlugin
,则可以使用org.eclipse.ui.plugin.AbstractUIPlugin.getDialogSettings()
来存储您的州。可能有点笨重,因为你必须保持它是最新的。
3)让您的公共管理器更新首选项,可能使用其他序列化技术。