
我从未尝试过GuIDe或其他DI库,但尝试使用Dagger from square for Android应用程序.它适用于Frgements,但不适用于POJO. user guide假设有关DI的一些知识,因为它没有更详细地解释.我该怎么做才能将restAdapater注入我的POJO.如果我使用相同的代码进行字段注入,它可以在Fragment中使用.
public class MyApplication extends Application { private ObjectGraph objectGraph; @OverrIDe public voID onCreate() { super.onCreate(); objectGraph = ObjectGraph.create(new DIModule(this)); } public ObjectGraph objectGraph() { return objectGraph; } public voID inject(Object object) { objectGraph.inject(object); } ... @Module(entryPoints = { MainActivity.class, ....., Auth.class, RestAdapter.class }) static class DIModule {@ProvIDes @Singleton public RestAdapter provIDeRestAdapter() { return new RestAdapter.Builder().setServer( new Server(Const.BASE_URL)).build(); } }}// POJO
public class Auth { @Inject RestAdapter restAdapater; String Username; String Password; public String authenticate() { ... API API = restAdapater.create(..) // **restAdapater is null** }}所有碎片都来自下面,DI工作正常.在最近的talk by Eric burke中,他解释说这是必要的,因为AndroID构造了对象.
public class BaseFragment extends Fragment { @OverrIDe public voID onCreate(Bundle state) { super.onCreate(state); ((MyApplication) getActivity() .getApplication()) .inject(this); }}解决方法:
如果您自己创建一个Auth实例,那么Dagger就不会知道这个实例,也无法为您注入依赖项.
由于您已经在Module entryPoints中声明了Auth.class,因此您只需要向ObjectGraph询问Auth实例:
Auth auth = objectGraph.get(Auth.class);然后Dagger知道提供Auth实例需要什么,即将它注入RestAdapter.
总结以上是内存溢出为你收集整理的java – Dagger:POJO中的场注入全部内容,希望文章能够帮你解决java – Dagger:POJO中的场注入所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)