我想用Dagger 2來實例化一個Retrofit接口。 CloudContactDataStore
類將注入RestClient
並調用其方法。爲什麼Dagger注入不起作用,但component.getObject是
當我實例化一個CloudContactDataStore
對象時,其RestClient
屬性具有null
值。
public class CloudContactDataStore implements ContactDataStore {
@Inject RestClient restClient;
public CloudContactDataStore() {
this.initializeInjector();
}
private void initializeInjector() {
ApiComponent component = DaggerApiComponent.builder()
.apiModule(new ApiModule())
.build();
component.inject(this); // Nothing changes, restClient is null!
this.restClient = component.getRestClient(); // This works
}
}
這裏是我創建的匕首模塊和組件:
@Singleton
@Component(modules = ApiModule.class)
public interface ApiComponent {
void inject(ContactDataStore contactDataStore);
RestClient getRestClient();
}
@Module
public class ApiModule {
@Provides public RestClient provideRestClient(ApiService apiService) {
return new RestClientImpl(apiService);
}
@Provides public ApiService provideApiService(RestAdapter restAdapter) {
return restAdapter.create(ApiService.class);
}
@Provides public RestAdapter provideRestAdapter() {
return RestApiAdapter.getInstance();
}
}
那麼,爲什麼inject
功能不工作,但調用component
的getRestClient()
是嗎?