问题标签 [assisted-inject]
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.
android - 工人类上的 ClassNotFoundException
我在生产中遇到了很多奇怪的错误,这些错误只发生在少数用户身上,所以 99% 的用户都没事。
这是 TranslationWorkerFactory 的代码。我正在使用匕首辅助注入将依赖项注入工作类。
我不知道为什么会这样。工作人员所做的是下载并解析大型 json,因此这可能是引发异常的原因,但这只是我的猜测是否可能相关。
有人知道发生这种情况的原因吗?
谢谢
android - 在 sharedViewModel 上调用 .observe() 时,Android ViewModel 没有零参数构造函数
我有以下课程:
视图模型
父片段:
以及通过 viewpager 附加到父片段的子片段
的呼唤
导致以下错误:Cannot create an instance of class MealPlanViewModel has no zero argument constructor
但是,如果我不使用 AssistedInject 在父片段中创建 ViewModel 并像下面这样实例化它,我不会在子片段中得到“没有零参数构造函数”。
关于为什么会这样以及如何在仍然使用 AssistedInject 的同时解决这个问题的任何想法?
interface - Dagger2 内置的 AssistedInject 如何支持返回接口而不是类的工厂
我正在研究 Dagger2 及其内置的 AssisedInject 注释。dagger.dev上提供的教程显示了一个示例,其中工厂方法返回一个具体类,但我希望工厂返回一个接口,该接口在某些模块中定义了实现绑定。
例如,在 Google Guice 中,我可以使用工厂模块构建器创建一个模块,以将接口和实现联系在一起:
Dagger2 AssistedInject 不可能吗?我对 Dagger 很陌生,也许我当时误解了这个概念。很感谢任何形式的帮助!
java - ViewModel 构造函数应该用@Inject 注释而不是@AssistedInject
我想在运行时使用 Hilt 为 ViewModel 提供一些依赖项。我遵循了 d.android.com this指导的解决方案。
但是,仍然收到构建错误ViewModel constructor should be annotated with @Inject instead of @AssistedInject.
我正在使用刀柄版本 2.38.1 和 AGP 版本 7.0.0。还尝试了一些早期版本(2.35、2.37)。
我也尝试过创建自己的工厂提供程序,但没有任何运气:
}
}
android - Hilt 模块中的 @AssistedInject 参数
我在将项目从 Dagger 迁移到 Hilt 时遇到问题。
遗留代码使用具有应用程序本身配置的类Foo (如国家代码等),在用户从触发异步调用的按钮中选择区域后检索此Foo类的实例。
此Foo实例用于创建FooModule并分配给依赖关系图,如下所示:
此外,这个Foo类用于创建一个Factory类,该类根据所述 foo 类的属性返回不同类的实例(如 RetrofitApiClients)。
FooModule 类看起来像这样:
FooFactory类只是一个具有不同实现的接口,这些实现依赖于Foo属性来实例化类。
实现如下所示:
到目前为止我尝试了什么
我想到解决这个问题的是@AssistedInject,我将代码修改为如下所示:
食品模块:
FooModuleFactory(新类)
当接收到Foo实例时......
选择区域活动
但这不起作用,因为 Hilt 需要模块的空构造函数:
我尝试将@Assisted Foo构造函数添加为 FooModule 的辅助构造函数,并将主构造函数为空,但我得到了同样的错误。
在 Hilt 模块中可以有@Assisted属性吗?
android - 用匕首/刀柄辅助注射
假设我有一个名为 interfaceA 的接口
这是Assisted
注入的具体实现
在这种情况下,您将如何使用Assisted
Inject,其中 dagger 还需要将具体类与接口绑定。
下面是正确的方法吗?或者我错过了什么?
然后,像这样绑定它
上述方法虽然有效,但我想知道是否有更好的方法或不同的方法,样板更少,我不知道。
android - 刀柄 - 辅助注射
我有工厂
在我的 viewModel 我有:
和 :
我得到错误:kotlin.UninitializedPropertyAccessException:lateinit 属性 setNumberUseCaseFactory 尚未初始化
为什么不注入 SetNumberUseCaseFactory?
android - 具有辅助注入和刀柄的共享视图模型
我有一个活动。此活动正在接收一些参数。目前,我可以viewModel
使用这些参数通过辅助注入创建一个。
现在,我有一个navHostFragment
导航图中的所有片段都将使用我之前在活动中创建的视图模型。但我找不到分享该 viewModel 的方法
我已经知道我们可以用来activityViewModels
与活动共享 viewModel
但是我sharedViewModel
没有没有辅助参数的构造函数(并且在运行时失败)。
目前,我有两个解决方案
第一个选项:在每个片段中“创建”一个新的 viewModel,并使用 activityViewModels 从活动(或 navArgs)接收参数以共享相同的实例(我不喜欢这种方法,但可以)
第二个选项:从构造函数中删除辅助参数并在 viewModel 中创建一个方法来设置我需要的信息:
所以,我的问题是......有没有办法在活动中创建一个带有辅助参数的视图模型,并与片段共享该视图模型?
android - 如何使用 Dagger Hilt 将 @Assisted 参数提供给依赖关系图
我的视图模型中有一个@Assisted 参数,所以:
参数是@Assisted val dataPaging: DataLugarPagging
.
现在,我想使用该参数并注入我的依赖关系图中,以便在我的存储库中使用它:
但是,我现在不知道如何做到这一点。我创建了一个名为:
但我的 var 出现错误:
lateinit var dataLugarPaging: DataLugarPagging
由于这个原因,还没有被初始化为亲切的lateinit。
有没有人遇到过类似的事情?