问题标签 [kodein]

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 投票
1 回答
1858 浏览

android - 如何使用 Kodein 为工厂类实例化许多参数

我正在Kodein为我的kotlin项目注入依赖项。所以我有一个 ViewModel 工厂,如下所示

然后,在我的 Application 类中,我创建了:

如您所见,我的ReadViewModelFactory. 但是当我运行我的应用程序崩溃发生在ReadActivity. 什么控制台日志说

java.lang.RuntimeException: 无法启动活动 ComponentInfo{id.my.app/id.my.app.ui.read.ReadActivity}: org.kodein.di.Kodein$NotFoundException: 没有为 bind() 找到绑定? ().? { ? 在这个 Kodein 容器中注册:

我的ReadActivity样子如下:

全栈跟踪

08-21 11:23:54.807 27186-27186/id.my.app E/AndroidRuntime: 致命异常: 主进程: id.my.app, PID: 27186 java.lang.RuntimeException: 无法启动活动 ComponentInfo{id. my.app/id.grid.app.ui.read.ReadActivity}:org.kodein.di.Kodein$NotFoundException:没有找到绑定()与?()的绑定。?{ ? 在这个 Kodein 容器中注册:

0 投票
0 回答
539 浏览

android - 尽管有以下示例,但未使用自定义 AndroidJUnitRunner

我正在尝试将自定义 AndroidJUnitRunner 实现与 ActivityScenarios 一起使用。目标是为单元测试提供一个 KodeinAware 的应用程序实例。

但是,尽管遵循了在线找到的示例,但似乎没有使用自定义运行器。我正在通过在以下覆盖中打印一条语句进行测试:

我还更新了 build.gradle 以使用自定义运行器:

为了更加确定我没有丢失日志中的打印语句,我的 KodeinAware Activity 中还有以下初始化代码:

结果,我不断收到以下异常,表明未使用自定义测试运行器:

java.lang.ClassCastException:android.app.Application 无法转换为 org.kodein.di.KodeinAware


我想强调的是,自定义运行器仅适用于常规 Android 单元测试,而不适用于仪器测试。

由于上述测试是 Android 库的一部分,我也没有使用生产应用程序类,所以我不希望模块中有应用程序。

有谁知道我可能做错了什么或者我是否错过了一些步骤?

0 投票
1 回答
1180 浏览

android-studio - 我可以注入活动的视图模型并在对话框片段中使用它吗

我正在尝试注入活动的视图模型,我想在对话框片段中使用它,如何用 Kodein 注入它?并使用我之前在其他活动或片段中注入的视图模型。

我已经尝试过中等教程这里是教程

https://proandroiddev.com/android-viewmodel-dependency-injection-with-kodein-249f80f083c9

我正在尝试从活动的视图模型访问注入结果,但是当我尝试从对话框片段访问 viewModel 内的某些对象时,该值为 null 与活动的 viewModel 不同

我期待当我访问对话框片段的 viewModel 中的某个对象时,我得到与活动的 viewModel 相同的值

我想要与活动的 viewModel 对象相同的结果,但我得到了空结果

0 投票
1 回答
1870 浏览

android - Kotlin Kodein NotFoundException:找不到绑定的绑定() 和 ?()

0 投票
0 回答
308 浏览

android - WorkManager 和 Kodein

我在使用 Kodein 实现 android WorkManager 时遇到了麻烦。我想使用 WorkManager 来跟踪后台位置更新,并定期向我的服务器发送发布请求以及用户的新位置。

我已经看到了多种使用 Dagger2 实现此功能的方法,但我想知道 kodein 是否有类似的解决方案?

这是我得到的错误:

2019-09-23 12:44:06.690 17462-17500/com.rainparrot.app E/WM-WorkerFactory: Could not instantiate com.rainparrot.app.utility.TrackLocationWorker java.lang.NoSuchMethodException: <init> [class android.content.Context, class androidx.work.WorkerParameters] at java.lang.Class.getConstructor0(Class.java:2204) at java.lang.Class.getDeclaredConstructor(Class.java:2050) at androidx.work.WorkerFactory.createWorkerWithDefaultFallback(WorkerFactory.java:96) at androidx.work.impl.WorkerWrapper.runWorker(WorkerWrapper.java:228) at androidx.work.impl.WorkerWrapper.run(WorkerWrapper.java:127) at androidx.work.impl.utils.SerialExecutor$Task.run(SerialExecutor.java:91) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) at java.lang.Thread.run(Thread.java:761) 2019-09-23 12:44:06.690 17462-17500/com.rainparrot.app E/WM-WorkerWrapper: Could not create Worker com.rainparrot.app.utility.TrackLocationWorker 2019-09-23 12:44:06.830 17462-17462/com.rainparrot.app D/MainActivity$onCreate: Work Manager Status: FAILED

这是我的主应用程序文件,其中包含我所有的 kodein 绑定:

MainActivity 实例化:

预测存储库设置:

0 投票
2 回答
87 浏览

kotlin - 必需:KodeinBinding

在探索 Kodein 时,我遵循https://proandroiddev.com/dependency-injection-with-kotlin-kodein-koin-3d783745e48d中的示例

我得到了错误

怎么了?

仅供参考,我使用 kodeIn 版本6.4.0

补充一下,我已经尝试过来自https://kodein.org/di/的示例

同样的事情也会发生。我做错什么了吗?或者文档已经过时了?

0 投票
1 回答
146 浏览

kotlin - 如何为 Kodein Injected 实例传递参数?

在 Kodein 中,当我有以下绑定时

我可以在下面使用我的 appDependent

但是,如果我想提供title如下

我怎么能创造appDependent

我尝试了以下方法但没有工作。

0 投票
2 回答
538 浏览

kotlin - 如何为 Kodein Injected 实例传递多个参数?

在 Kodein 中,我有以下绑定

我可以使用它创建它

但是,如果我的绑定有多个参数,例如

我怎么能实例化它?我看到我们只有一个arg函数instance()

0 投票
1 回答
101 浏览

android - 如何在 Android 中将 Kodein 与 Conductor 一起使用?

我想在我的应用程序中同时使用 Conductor 和 Kodein。问题是应用程序上下文和活动在控制器设置上都是空的,我无法访问 Kodein 实例。

0 投票
0 回答
340 浏览

android - 需要 HTTP 方法注解 Retrofit2

我对存储库模式的使用有一个抽象,我无法进行改造调用。

我将从改造服务转到我的用例。

我有 AuthenticationRetrofitService

然后我有AuthenticationRetrofitApi哪些实现AuthenticationApi

那么这是AuthenticationApi

然后我有AuthenticationRepository

AuthenticationRepositoryImpl

从我的用例中,我称AuthenticationRepository我的问题是,我不知道如何链接它们,因为如果我运行应用程序,我会收到此错误。

java.lang.IllegalArgumentException:需要 HTTP 方法注释(例如,@GET、@POST 等)。

然后我正在使用Kodein依赖注入,但我不知道要做什么bindprovide可能是什么错误?因为 :

AuthenticationRetrofitApi未使用 AuthenticationRepositoryImpl未使用

我错过了什么?

编辑

这就是我Kodein用于改造模块的方式