草庐IT

android - 如何在 Dagger 2.10 中创建自定义作用域模块

我正在尝试将公司应用程序迁移到dagger2.10和AndroidInjector.inject方法,但我认为我发现了一个问题。该应用程序使用自定义范围……例如登录功能有3个Activity(每个Activity都有自己的Dagger模块)和一个负责共享仅应存在于此范围内的单例的登录模块。因此,在第一个Activity中,我曾经执行过类似的操作:publicclassLoginActivityextendsAppCompatActivity{publicvoidonCreate(Bundlebla){LoginActivityComponentactivityComponent=((C

android - Dagger2 不生成 Dagger* 类

Dagger2不创建类Dagger*。我创建了接口(interface)IDaggerTestModule,但没有创建类DaggerIDaggerTestModule!所有图书馆都有。也许“apt”没有被触发???我的测试项目:https://github.com/gc986/Dagger2Test我的配置:buildscript{repositories{jcenter()}dependencies{classpath'com.android.tools.build:gradle:2.2.0-beta2'classpath'me.tatarka:gradle-retrolambda:

android - 用于自定义类的 Dagger Android 可能吗?

我正在尝试让dagger-android与Conductor(或任何自定义类)一起工作。我尝试复制AndroidSupportInjectionModule(和friend)所做的一切,在我看来,这与自定义类处理是同一种。不管怎样C:\Users\ursus\AndroidStudioProjects\...\ControllersModule.java:15:error:com.foo.bar.ChannelsControllerisnotaframeworktypepublicabstractcom.foo.bar.ChannelsControllerchannelsControl

java - Dagger 2,supertypeInjector 为空

我正在尝试使用Dagger2实现DI。我使用这个article例如,但我在生成的类中得到了NullPointerException。这是我的堆栈跟踪:E/AndroidRuntime:Causedby:java.lang.NullPointerException:Attempttoinvokeinterfacemethod'voiddagger.MembersInjector.injectMembers(java.lang.Object)'onanullobjectreferenceE/AndroidRuntime:atme.cullycross.moody.activities.Au

android - Dagger 2 的作用域可以比 Activity 生命周期短吗?

我一直在研究Dagger2中的自定义作用域(this和this是我试图将我的代码作为基础的那些),有一件事我似乎仍然无法理解,我看到您可以创建一个具有自定义作用域的组件,然后该组件包含的模块中的所有提供物都将与组件具有相同的作用域(组件中的单例)或非作用域,每次都会返回新实例你得到一个。但是,我仍然不明白的是,如果你有一个用户范围,然后你有一些模块绑定(bind)到该范围,假设你的网络组件绑定(bind)到它,以便网络调用使用当前用户信息,如果您在Activity生命周期中注销用户(或登录用户),它是否会更改您当前标记为@Inject的对象引用?或者在ActivityonCreate方

android - Dagger 2 单例 vs 真实单例

我正在尝试在我的项目中使用dagger2。Dagger提供了一种创建单例的好方法,我的项目中有一些,但Dagger创建了一个新的对象图,其中包含每个@Singleton对象的每个新容器,因此我们必须在应用程序级别创建组件,因此我们应该将应用程序提供给使用单例的类,这看起来不太好:(。问题是:我应该保留我的旧单例吗?还是我应该使用Dagger? 最佳答案 Dagger是管理单例的更好方法,部分原因是您无需担心如何在单元测试期间替换这些单例:您的单例将通过您可以在单元测试中控制和覆盖的方式注入(inject)(即构造函数参数和可访问字段

java - 如何使用 Dagger2 将 FragmentPagerAdapter 正确注入(inject)我的 Activity 类?

我正在尝试创建一个模块类AdaptersModules,它提供ViewPagerAdapter。ViewPagerAdapter是FragmentPagerAdapter的扩展类。ViewPagerAdapter构造函数需要FragmentManager。我的Activity课是:publicclassTabsActivityextendsAppCompatActivity{publicFragmentManagerfm=getSupportFragmentManager();@InjectViewPagerAdapteradapter;@InjectHomeFragmenthomeF

android - 为什么 Dagger 组件必须声明它们的作用域?

为什么我必须用Dagger组件将要使用的范围来注释它?为什么仅注释类本身是不够的? 最佳答案 因为范围本身没有任何意义。为范围引入意义的是组件及其关系。如果它们的依赖项可用,则可以从任何组件提供未限定范围的对象。由于它们是无范围的,因此每次调用它们的提供者时都会创建一个新对象。作用域对象将共享同一作用域组件的生命周期,并且每个组件只会创建一次。如果重新创建组件,则会重新创建其范围内的所有对象。这就是事情变得棘手的地方。假设您有以下设置:一个组件和一个子组件,通常是这种情况。@ComponentinterfaceMyComponent

android - Dagger 2 第三方注入(inject) Android

您好,我正在尝试弄清楚如何进行干净的第三方注入(inject)。我想将Otto总线正确地注入(inject)我的服务和Activity中。我看到您可以在构造函数上使用注入(inject),但由于我没有任何Android构造函数,我想知道如何注入(inject)我的总线。Iv创建了一个提供总线新实例的模块。我还创建了一个具有Bus对象接口(interface)的组件。但是我怎样才能注入(inject)它,我应该在哪里启动我的图表?由于Dagger1中的objectGraph被删除,我在应用程序类中使用Dagger_....组件和create(),但我应该如何将它注入(inject)到任何

java - Dagger 2 注入(inject)没有模块的单例

我正在使用Dagger2注入(inject)来为客户端提供一些依赖:publicclassDependency{@InjectDependency(){}voidcheck(){System.out.print("Instantiated");}}publicclassClient{@InjectDependencydependency;Client(){ClientComponentcomponent=DaggerClientComponent.create();component.inject(this);}voidcheckDependency(){dependency.chec