2013-05-06 73 views
0

在我的Android應用程序項目中,我使用的是RoboGuiceRoboGuice @Inject

在我的項目,我有一個 A類:

@ContextSingleton 
public class A{ 
    … 
    public void method1(){…} 
} 

然後,我有另一個類B的需要的一個實例,因此,在RoboGuice方式,我通常會定義實例與注射一個內部類B:

public class B { 
    @Inject private A a ; 

    public void action(){ 
     a.method1(); // call method1() of class A's instance 
    } 
} 

有時候,我得到NullPointerException異常爲B類聲明的實例。我只想驗證RoboGuice的一個概念:

這是爲了注入一個自定義類的實例(例如, A類),B類必須注入RoboActivity或注入另一個注入RoboActivity的類(例如C類)?

回答

0

您可能在自己的某處實例化B(new B()),然後您需要手動調用Injector。

當RoboGuice創建實例B時,它會自動注入依賴關係A,但是當您自己創建B時,RoboGuice不會知道它,您必須自己調用注入代碼。這可以通過呼叫完成:

RoboInjector injector = RoboGuice.getInjector(context); 
injector.injectMembersWithoutViews(yourObjectB);