草庐IT

AndroidAnnotations 和 Dagger 2

全部标签

android - 没有 Dagger2 为 JUnit 测试生成文件

新的AndroidStudio1.1版本引入了单元测试支持。这个网址http://tools.android.com/tech-docs/unit-testing-support提供如何设置IDE以运行Android源的JUnit测试的分步说明。这个插件https://bitbucket.org/hvisser/android-apt用于向AS提供Dagger2生成的文件,它适用于普通的Android代码,但不幸的是,没有为任何JUnit测试类生成的Dagger2文件。我尝试像这样配置依赖项androidTestApt'com.google.dagger:dagger-compiler

android - Dagger2 - 生成的组件类中的 "Unused"模块

我的Dagger2组件类包含3个模块,我试图使用它们将字段依赖项注入(inject)AndroidActivity类。生成的组件文件有注释说所有模块都未使用,链接此page获取更多信息。我的Activity类正在调用Component的inject(Activity)方法,并且具有由模块提供的注入(inject)注释字段,所以我不确定为什么生成的Component文件没有任何Provider来执行此注入(inject)。我的代码在下面,感谢您的帮助!生成的组件类:publicfinalclassDaggerMainComponentimplementsMainComponent{pri

android - Dagger + 改造动态 URL

问题我需要从USER输入的域调用API,并且我需要在调用之前根据插入的数据编辑我的Retrofit单例。有没有办法“重置”我的单例,迫使它重新创建?或有没有办法在调用之前用我的数据(可能在拦截器中?)更新我的baseUrl?代码单例@Provides@SingletonRetrofitprovideRetrofit(SharedPreferencesprefs){StringapiUrl="https://%1s%2s";apiUrl=String.format(apiUrl,prefs.getString(ACCOUNT_SUBDOMAIN,null),prefs.getString

android - 切换到 Android Studio 2.0 后使用 Dagger 2 时出现 NoClassDefFoundError

在升级到AndroidStudio2.0之前,我可以毫无问题地使用Dagger2。现在我得到了一个NoClassDefFoundError这让我关闭了一天多,我正在寻求帮助。似乎Gradle不能使用我的AppModule类,尽管很明显它在我的项目中。我什至包含了setmultiDexEnabledtrue,即使我的项目只有几个文件。我在网上找到的所有内容都说您可以单击要导入的库。AndroidStudio没有这样的奢侈。如有任何帮助,我们将不胜感激,我将永远忠诚于您。04-2117:26:54.0067875-7875/com.androidtitan.spotscoreappE/An

android - Dagger 2 for Android 不是 DI 框架,而是美化了的 Service Locator 吗?

例如,假设我使用Retrofit创建的Rest适配器位于Application类中。我很想在Activity中获取它,所以我编写了以下代码:publicclassMainActivityextendsActivity{@InjectMyRestAdaptermRestAdapter;@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);((GlobalApplication)getApplication()).getComponent().inject(this)

java - 适用于 Android 的 Dagger : Injecting an Activity to the object graph after calling setContentView

我想在Android上使用Dagger将Activity的实例注入(inject)到另一个类中,如下所示:classPresentationLayer{ActivitymActivity;@InjectpublicPresentationLayer(Activityactivity){this.mActivity=activity;}publicvoidpresentData(Useruser){((TextView)mActivity.findViewById(R.id.username)).setText(user.getName());//...//...}}我能够进行注入(in

带有 Dagger 2 的 Android MVP - 具有多个 fragment 的 Activity

我一直在查看使用Dagger2的MVP的GoogleAndroid架构示例:https://github.com/googlesamples/android-architecture/blob/todo-mvp-dagger/todoapp/app/src/main/java/com/example/android/architecture/blueprints/todoapp/tasks/TasksActivity.java但是,这个例子相当简单——每个Activity只有一个Fragment,Dagger组件构建在Activity中,并用于将Activity与Presenter注入

带有 Dagger 2 的 Android 普通 Junit

我曾经在MVP工作,我通常使用普通的Junit(不是Instrumentation!)测试我的Presenter,因为Presenter只有业务逻辑,没有任何对Android内部的引用。现在切换到Dagger2后,我了解到我在为我的应用程序组件设置“TestModule”时遇到了问题。在测试类中创建组件将不起作用(可能是因为“apt”没有在那里运行)未找到任何将Dagger与标准Junit测试结合使用的示例。我发现的每个示例都只依赖于Instrumentation测试或Roboelectric(基本上模拟Activity和其他Android相关的东西),但这对我来说只是一个UI测试,我

java - Dagger 2 : Cannot be provided without an @Provides-annotated method

我刚开始学习dagger2,遇到了一个奇怪的问题,在我看来像是一个错误。这是模块:@ModulepublicclassSimpleModule{@ProvidesCookerproviderCooker(){returnnewCooker("tom","natie");}}组件:@Component(modules=SimpleModule.class)publicinterfaceSimpleComponent{voidinject(DaggerTestActivityactivity);}接口(interface):publicinterfaceCoffeeMaker{String

android - 在 Robolectric 测试中覆盖 Dagger 模块

我正在开发一个Android应用程序,我一直在使用Dagger进行依赖注入(inject)。我现在正在尝试测试具有这些依赖项之一的fragment,我们称它为ProductsService。在我的Robolectric测试中,我有一个覆盖ProductsService的测试模块:@Module(includes=ProductsModule.class,injects={Fragment.class,FragmentTest.class},overrides=true)staticclassMockProductsModule{@Provides@SingletonpublicProd