2015-04-08 122 views
0

我用匕首beggining,我使用1.2版本的它使用匕首類,我有以下情形:廣東話注入在Android

模塊:

@Module(injects = { 
    AuthenticationService.class 
}) 
public class ServiceModule { 

    @Provides 
    AuthenticationService provideAuthenticationService() { 
     return ServiceFactory.buildService(AuthenticationService.class); 
    } 

} 

在我的應用程序類創建在ObjectGraph:

public class FoxyRastreabilidadeApplication extends Application { 

    private static FoxyRastreabilidadeApplication singleton; 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     createObjectGraph(); 
     singleton = this; 
    } 

    private void createObjectGraph() { 
     ObjectGraph.create(ServiceModule.class); 
    } 
} 

,最後,在我的LoginActivity,我嘗試注入我的AuthenticationService:

public class LoginActivity extends Activity implements LoaderCallbacks<Cursor> { 

    private UserLoginTask mAuthTask = null; 

    @Inject 
    AuthenticationService authenticationService; 
} 

在這一點上,當我嘗試訪問我的AuthenticationService實例時,它總是空的,這意味着它根本沒有注入,我調試了我的提供者方法以確保它,所以,問題是,我是否錯過了某些東西?如果是這樣,那是什麼?

回答

0

您需要按住ObjectGraph並要求它直接注入對象。

  • 一個實例變量添加到您的自定義Application子扶住創建ObjectGraph

this.objectGraph = ObjectGraph.create(ServiceModule.class);

  • 添加一個便捷方法你Application做注射:

public void inject(Object object) { this.objectGraph.inject(object); }

  • 調用該方法,無論你需要注射的情況發生,例如在你的Activity

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ((MyApplication)getApplication()).inject(this); ... }

+0

有道理,我很快就會試試這個,如果它工作,我會很樂意接受你的答案,謝謝你的答覆:D –