我在Android应用程序中使用dagger作为DI。我可以为模块外的其他类提供变量,但如何更新它们?Example:LoginIneedaAuthenticationModulewhichcanProvideaUser.Whentheappstarts,theUserisnotloggedin,soitisnull.Butaftersuccessfulauthentication,LoginActivityneedstosetthevalueoftheUsertomakeitaccessiblethroughotherpartsoftheappviaAuthenticationMod
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭2年前。Improvethisquestion我是dagger2和android依赖注入(inject)的新手。我听说很多android开发人员使用dagger2。我知道它管理类之间的依赖关系,有了它我们将不再使用关键字“new”,但我想知道为什么我真的要使用它?它是否管理内存分配并最大限度地减少泄漏?它对应用程序的性能有好处吗?
当我使用RoboGuice时,我能够通过构造函数将上下文注入(inject)到我的类中,并且RoboGuice会选择合适的上下文(在Activity中注入(inject)将具有Activity上下文,在Application中注入(inject)将具有当前应用程序上下文,在fragment将具有fragment的Activity上下文等...)。Dagger有类似的方法吗?publicclassThing{@InjectpublicclassThing(Contextcontext){//ifi'minjectedinanActivity,Ishouldbethecurrentacti
我在我的Android项目中使用Dagger2,但在调试它时遇到了问题。我知道编译失败是因为我的dagger2设置(以前有过)中的错误,但几乎不可能找到它,因为我没有收到正确的错误消息告诉我问题出在哪里。我得到的只是显示注释处理失败的消息。沿着:Error:Executionfailedfortask':app:compileDebugJavaWithJavac'.>Compilationfailed;seethecompilererroroutputfordetails.Error:(14,28)error:cannotfindsymbolclassBRError:(17,40)er
在我的Android应用程序中,我设置了Volley。Robolectric.application已初始化,所有其他测试运行顺利。尝试获取模拟的HTTP响应时出现此错误。这是我的测试:@RunWith(MyRobolectricTestRunner.class)publicclassApiTests{@InjectprotectedApiapi;@BeforepublicvoidsetUp(){ObjectGraph.create(newAndroidModule(Robolectric.application),newTestApplicationModule()).inject(
"Alongtimeagoinagalaxyfar,faraway...."好吧,长话短说-我决定试一试AndroidStudio3.0Preview(Canary2),但我无法使用让它与Dagger2一起工作annotationProcessor而不是android-apt。我收到的错误消息很容易消化:Error:(59,24)error:cannotfindsymbolvariableDaggerAppComponent我已经阅读了文档(我猜那里没什么特别的):https://developer.android.com/studio/preview/features/new-and
我正在尝试在具有多个Android库模块的Android项目中使用Dagger2,并且我希望能够提供类的单例范围实例来自这些模块。目前,我能够在库模块中定义组件,并在主应用程序模块中注入(inject)实例。我无法做的是提供一个实例作为单例。项目结构如下:Project├──app├──library1···└──libraryN在库中,我以这种方式定义组件:@ComponentpublicinterfaceLibraryComponent{//ProvideinstancesofMyManagertoMainComponent:MyManagergetMyManager();}MyM
我有一个抽象的AccountRequiredActivity,看起来像这样(并且工作正常):publicabstractclassAccountRequiredActivityextendsLifecycleActivity{@InjectViewModelProvider.FactoryviewModelFactory;privateAccountViewModelaccountViewModel;publicabstractvoiddoOnCreate(BundlesavedInstanceState);publicabstractvoiddoOnResume();@Overrid
关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭5年前。Improvethisquestion如何在我的Android项目中使用Dagger,使用它的主要目的是什么?我在谷歌上搜索了它,但我不清楚。所以如果可能的话,请给我最好的解决方案和一个例子。
开始探索Espresso2.0,但似乎遇到了问题。我无法让测试成功地针对任何包含Dagger的项目运行。当我运行测试时,我得到以下异常(最后是整个堆栈跟踪):java.lang.NoClassDefFoundError:com/pdt/daggerexample/model/DaggerExampleAppModule$$ModuleAdapter$ProvideMySingletonProvidesAdapter应用程序在未从AndroidInstrumentationTest运行时运行。这里有一些相关的文件,我也已经将项目上传到github以便更快地checkout/复制https