问题标签 [toothpick-di]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
201 浏览

kotlin - Kotlin kapt 参数一个键的多个值

我正在尝试将没有反射的牙签库集成到我的多模块项目中。我按照本指南将我的所有模块与 DI 连接起来。例如我有三个模块::app, :feature1, :feature2. :app模块依赖于:feature1:feature2。我需要从两个功能模块中注入类。所以在我:appbuild.gradle文件中我需要写这样的东西(使用annotationProccessor - 而不是kapt):

如您所见,toothpick_registry_children_package_names参数有两个值(两个值的列表)。但是如何使用 kapt 插件为一个键设置多个值?我试过这样做:

但生成的代码如下所示:

如您所见,参数包括方括号(第一个参数以“[”开头,第二个以“]”结尾)。我究竟做错了什么?我试图删除方括号,但两个模块名称只是像这样连接:

是 kapt 插件中的错误还是我做错了什么?

0 投票
1 回答
322 浏览

android - 匕首代码有效,如何使牙签代码以相同的方式工作?

我开始使用牙签,我需要从匕首代码迁移到牙签。

好吧,我在 Dagger 的项目中有下一个字符串。

它工作正常(除了我仍然无法理解什么或谁将存储库/serviceImpelmentation 放入提供方法)。好吧,我正在尝试在 Toothpick 中做同样的事情,然后做下一个:

然后

最后

我有上面的所有限定符。

我将我的模块安装在 Fragment 类(Fragment Scope)中

但最后我得到 NullPointerException 我的 ProjectsRepository 为空,我不能使用它的实例方法。

我在哪里犯错?请帮忙“翻译”。

0 投票
2 回答
842 浏览

java - 当构造函数在牙签中有参数时通过工厂注入

我有一个要注入的类,它有一个接收一个参数(上下文)的构造函数。

我通常会将它绑定到一个实例,但是这个类具有 JNI 依赖项,我无法使用 Robolectric 实例化它,这阻止了我在配置模块时测试应用程序的一部分。

我已将其设置为与类的绑定,并将目标类注释为单例,并将构造函数注释为注入,但它没有为它构造工厂。

我很乐意提供自己的工厂,但我在文档中找不到任何相关信息。

这是我进行绑定时的部分:

这就是我设置课程的方式:

为了清楚起见,如果我在进行绑定时使用 toInstance ,它确实有效。

如何让注入的构造函数将其绑定到类?

0 投票
1 回答
450 浏览

java - 牙签不会在注入的实例中注入依赖项

我为 Toothpick 和 Authenticator 创建了 Activity、ViewModel、Modules。

在 Toothpick 的文档中写道:“如果 Toothpick 创建一个实例,它将始终注入其依赖项。” , 但在 Toothpick.inject(this, appScope); 之后

mGetSmsViewModel.app == null 和 mGetSmsViewModel.authenticator == null 。在 Toothpick.inject(mGetSmsViewModel, appScope); 之后 app 和 authenticationator 字段被注入。

应该是这样吗?

0 投票
1 回答
184 浏览

android - 我们可以像在 Dagger 中一样使用牙签在 Presenter 中注入“视图”吗?

在 Dagger 中,您可以在Presenter中注入您的activityas视图,请按照以下示例进行操作,

飞溅模块

查看模块

活动模块

我试图在 ToothPick 中找到如何做到这一点,但找不到任何官方文档或博客文章!

谢谢

0 投票
1 回答
43 浏览

android - 在 3.0.2 版本中找不到 ToothPickRule 类

我将toothpicksdk 版本更新为3.0.2from 1.1.3。更新后,无法ToothPickRuletoothpick. 这导致测试用例失败。

0 投票
1 回答
877 浏览

android - 当存在多个片段实例时将视图模型注入片段

我正在为 Android 应用程序使用 Toothpick 依赖注入框架,并且当后台堆栈上存在相同片段的多个实例时,我在将 android 视图模型注入片段时遇到问题。我希望每个片段实例都有自己的视图模型实例,但问题是只有一个视图模型被创建并在所有片段实例之间共享。

我创建了一个示例项目来演示该问题。单个活动包含具有 android 视图模型的单个片段。此活动的多个实例被创建并放置在活动后台堆栈上。

这是我的活动:

它包含以下布局:

主要片段:

主视图模型:

我的直播数据:

输出:

如您所见,新片段被创建,但共享相同的视图模型和实时数据。我想为每个片段创建一个新的 viewmodel/livedata,这些 viewmodel 应该存在于 viewmodel 范围内。我怎样才能做到这一点?

0 投票
1 回答
164 浏览

android - 使用 Toothpick DI 注入仿制药

我一直在玩 ToothPick DI,我遇到了一种情况,我需要向演示者注入几个泛型,但我不知道该怎么做,或者是否有可能。这是我正在尝试做的一个例子。

这是演示者的示例:

让我们假设interactor1 和interactor2 通过注解或模块正确注入,但是List 和Page 仍然缺少绑定。

根据我的经验,我无法将PageList与 Toothpick 绑定,因为它无法注入泛型类型,我错了吗?

谢谢!

0 投票
0 回答
73 浏览

android - 在使用 ToothPick 的应用程序中使用 Leak Canary 发现模糊泄漏

我有一个使用单个 Activity 和 Toothpick / Ktp 实现的应用程序。

我为每个片段创建一个范围,当片段被销毁时我关闭它。此行为在 BaseFragment 类中完成。

它确实使用 ViewBinding。

调用 onDestroyedView 时,适配器及其侦听器为空。

有人有其他想法这种泄漏可能来自哪里?或详细搜索?

0 投票
0 回答
104 浏览

android - 如何使用 Toothpick 对 android ViewModels 使用构造函数注入

我想为我的视图模型使用构造函数注入

自定义视图模型工厂似乎可行,subScope.installViewModelBinding<VM>(fragment, factory) 但我还没有弄清楚如何以方便的方式做到这一点,有什么建议吗?