私は現在 E4 RCP アプリケーションを開発していますが、次の問題があります: アプリケーションの開始時に見えないパーツがあります (toBeRendered="false" visible="false")。別のパーツでボタン クリックが発生した場合は、次のようにします。
MPart s = partService.findPart("S");
if (s != null) {
s.setToBeRendered(true);
s.setVisible(true);
partService.activate(s); }
これはうまくいきます。したがって、ユーザーがパーツを開くと、クラスを介してそのパーツにコンポジットが作成され、このクラスには依存性注入があります。
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 が発生します。したがって、インジェクションは機能しません。このコンポジットが作成される前に作成された別のパーツで機能するため、このインジェクションが機能しない理由がわかりません。
誰か助けてください。