2016-12-12 36 views
0

我執行方法後,我想設置當前選擇null。我得到了這個,但它不會工作。之後,selection仍然保存一個值,該值不爲空。e4 Set ESelectionService Null

@Inject 
    private ESelectionService selection; 

    @Execute 
    public void execute(@Named(IServiceConstants.ACTIVE_SELECTION) Foo foo, Shell shell) { 
     if (true) { 
      //do something! 
      final Object NULL_OBJECT = new Object(); 
      selection.setSelection(NULL_OBJECT); 
     } 
    } 

回答

1

有多個選擇服務,每個上下文有一個(IEclipseContext)。您可能會在錯誤的上下文中設置選擇。

ESelectionService作爲班級的字段注入可能意味着您最終得到錯誤的服務。始終將此作爲execute方法的參數注入。

... no field injection 

@Execute 
public void execute(ESelectionService selection, @Named(IServiceConstants.ACTIVE_SELECTION) Foo foo, Shell shell) { 
+0

感謝您的幫助。有效!!精彩 – Hammelkeule