Я использую Guice 3.0 на Android, чтобы делать некоторые DI.
У меня есть
public interface APIClient { }
и
public class DefaultAPIClient implements APIClient { }
Что я сделал, так это попытался загрузить Guice в моем классе MyApplication, предоставив ему модуль, который имеет один оператор в методе настройки bind(APIClient.class).to(DefaultAPIClient.class);
Я сделал то, что сказал мне пример Guice
Injector injector = Guice.createInjector(new APIClientModule());
injector.getInstance(APIClient.class);
Возможно, я неправильно понимаю это, но как мне внедрить APIClient в несколько действий, которые будут его использовать?
Я сделал это в HomeActivity
public class HomeActivity extends RoboActivity {
@Inject APIClient client;
protected void onCreate(Bundle savedInstanceState) {
client.doSomething();
}
}
Это не работает, и это дает мне Guice configuration errors: 1) No implementation for com.mycompany.APIClient was bound
Таким образом, единственный способ заставить это работать — удалить @Inject
из клиента APIClient в HomeActivity и внедрить его с помощью client = Guice.createInjector(new APIClientModule()).getInstance(APIClient.class);
Значит ли это, что мне придется делать это в каждом действии, использующем APIClient? Должно быть, я делаю что-то не так.
Любая помощь будет здорово. Спасибо!