我在 Android 上使用 Guice 3.0 来做一些 DI。
我有
public interface APIClient { }
和
public class DefaultAPIClient implements APIClient { }
我所做的是尝试在我的 MyApplication 类中引导 Guice,给它一个在 configure 方法中有一个语句的模块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
从 HomeActivity 中的 APIClient 客户端中删除并使用注入它client = Guice.createInjector(new APIClientModule()).getInstance(APIClient.class);
那么这是否意味着我必须在每个使用 APIClient 的 Activity 中执行此操作?我一定做错了什么。
任何帮助都会很棒。谢谢!