我目前正在开发 E4 RCP 应用程序,但遇到以下问题:我有一个在应用程序打开时不可见的部件 (toBeRendered="false" visible="false")。当另一个部件上的按钮单击发生时,我执行以下操作:
MPart s = partService.findPart("S");
if (s != null) {
s.setToBeRendered(true);
s.setVisible(true);
partService.activate(s); }
这很好用。因此,如果用户打开 Part (s),则通过一个类在该 Part 上创建一个 Composite,并且在这个类中我有依赖注入:
public class S {
....
@Focus
public void focusGained() {
...
MyComposite m = new MyComposite(parent, SWT.NONE);
...
}
}
public class MyComposite extends Composite {
@Named("list")
private HashMap<String, Ex> myMap;
public MyComposite(Composite parent, int style) {
super(parent, style);
myMap.get("key");
}
}
但是我在 myMap.get("key"); 得到一个 NullPointerException 所以注射不起作用。它适用于另一个部分,该部分是在创建此合成之前创建的,所以我不明白为什么此注入不起作用。
有人可以帮我吗?