Я использую Guice 3.0 на Android, чтобы сделать DI.
У меня есть
public interface APIClient { }
и
public class DefaultAPIClient implements APIClient { }
Я попытался загрузить Guice в мой класс MyApplication, предоставив ему модуль с одним оператором в конфигурацииmethod 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?Должно быть, я что-то делаю не так.
Любая помощь будет отличной.Спасибо!