问题标签 [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 投票
0 回答
270 浏览

kotlin - org.kodein.di.Kodein$NotFoundException: 没有为绑定找到绑定() 和 ?().? { ? }

我正在用 objectbox + retrofit + kodein 做一个项目。但我收到了这个错误。

org.kodein.di.Kodein$NotFoundException:没有找到绑定()与?()的绑定。?{ ? }

KodeinApplication.kt

}

BaseRepository.kt

) { abstract fun loadData(): LiveData inline fun fetchData(crossinline call: (LLApi) -> Deferred<Response>): LiveData { val result = MutableLiveData()

}

登录存储库.Kt

}

登录视图模型工厂.kt

}

登录视图模型.kt

}

登录请求.kt

)

登录片段.kt

}

请随时询问所需的任何文件,并请帮助我解决这个问题..

0 投票
1 回答
148 浏览

android - Kodien 在编译时是否经过验证?

我正在开始一个新的 KMM 项目,我想集成一个 DI 系统。我发现有 2 个选项:KodeinKoin。可悲的是 Koin 没有像 Dagger 那样在编译时验证,我想知道 Kodein 是否在编译时得到验证?期待您的回复,并提前致谢。

0 投票
1 回答
164 浏览

java - Kodein Scopes,将数据库服务绑定到活动生命周期

在过去的一天里,我一直在尝试在 kodein 中实现一个自定义范围,我正要扯掉我的头发。我的应用程序基于 2 个活动,一个用于登录,另一个在用户登录时(我将其称为 MainActivity)。我有几个单例服务从我在 MainActivity 中的许多片段中使用的 Firestore 数据库获取数据,我目前正在使用 Kodein 获取每个服务的单例对象。

我的服务总结:

还有我的 Kodein 应用程序中的服务

在我的片段中,我只需获取我的 tagsService 类

现在的问题是,当用户退出时,我必须在这种情况下清理所有标签,等待用户登录,创建一个新的查询等等,很多工作。但是,如果这个服务可以以某种方式被“杀死”,然后在用户登录时再次启动(回到 MainActivity,也没有保存它的最后一个状态,只是一个新对象),那么一切都会自动清理,而无需我编写很多代码。

目标:由于 MainActivity 仅在用户登录并经过正确身份验证时才处于“活动状态”,因此我想将生命周期附加到我的 TagsService 对象,每当 MainActivity 死时它也会杀死我的 tagsService ,然后每当 MainActivity “活着”时“重新初始化”再次。

如果很难掌握我想要做什么,我感到非常抱歉,我对 kotlin 和整个编程都很陌生

0 投票
1 回答
372 浏览

android - Fragment.viewLifecycleOwnerLiveData.observe 不使用 kodein 调用

我正在制作一个应用程序,我想将我的 UI 逻辑分成多个 UI 类,其中 BaseUi 类是生命周期感知的。我使用 Kodein 作为我的 DI,fragment.viewLifecycleOwnerLiveData.observe当我的 ui 类的实例被 Kodein 检索时,我遇到了没有被调用的问题。这是我的片段类:

BaseUi 类:

和 UIModule:

0 投票
1 回答
118 浏览

kotlin - Ktor / Kodein - 如何编写集成测试

目前我编写了一个小型演示应用程序,它使用 Ktor 作为其应用程序环境,并使用 Kodein 作为依赖注入框架。

在应用程序的初始化过程中,我确实导入了一些模块,其中一个是我想在集成测试的初始化过程中替换的:

在测试中,我想使用不同的persistenceModule,例如。一个内存模块。我的测试初始化​​如下:

我已经试过打电话

但这让我(很明显)只能访问已经初始化的 Ktor 功能。这样的事情有可能吗?

0 投票
0 回答
130 浏览

android - 使用 Kodein DI 时如何防止 ViewModel 重新创建?

我尝试使用 Kodein DI 库并习惯于像这样绑定我的 Repo、NetworkService 和 viewModel

活动 :

我能够使用 viewmodel 并且一切正常,但我注意到在设备旋转时我的 viewmodel 状态没有被保存,或者我的 Activity 正在创建一个新的 ViewModel。我用 ViewModelProviders 方法尝试了这个,并且有效,但是使用 Kodein DI,我的视图模型在设备旋转时再次实例化。

我在这里做错了什么?

0 投票
2 回答
969 浏览

kotlin - Kodein + Ktor = 冻结 kotlin.collections.HashMap 的突变尝试 - 为什么?

最近几天,我一直在与这个例外作斗争。

我有一个具有以下依赖项的 kotlin 多平台项目:

  • 科特林=1.5.10
  • 科丁=7.6.0
  • ktor=1.6.0(内部使用 kotlin 协程 1.5.0-native-mt)

在尝试在本机中使用 httpClient 时,我一直在提到异常:

我设法在测试中重现了该崩溃:

我还设法通过更改来修复它:

到:

然后我注意到 HttpClient 做了一件非常具体的事情——它在 init 块中冻结了自己。我设法用这个示例代码重现了它:

所以我的理论如下:

  1. kodein 尝试提供FrozenConstructor
  2. FrozenConstructor被创建并冻结自己,它的成员引用了 kodein
  3. kodein 尝试缓存提供的依赖项并尝试改变内部MutableMap冻结的内容,一切都崩溃了

有人可以确认这或多或少是正确的,如果不是,请纠正我?

你们还可以建议处理它的最佳方法,以及其他在那里等待的陷阱吗?

它是一个kodein错误吗?

如果我with provider不使用,为什么 kodein 必须将某些内容存储在可变映射中with singleton

0 投票
0 回答
91 浏览

build.gradle - 无法在 KMP 应用程序中找到 Kodein-db-0.8.1-beta-samplesources.jar

我想将 Kodein 添加到我的应用程序中,但似乎无法添加。

这是我得到的错误:

我有这个

在我的项目级别 build.gradle.kts 我有这个:

我删除了最后一行,repositories但仍然失败并出现同样的错误。

0 投票
0 回答
22 浏览

android - 如何在 attachBaseContext 中使用 Kodein 实例?

我需要在我的 MainActivity 的 attachBaseContext 中访问我的 SharedPreferences 实例(dataHandler),所以我在那里设置了语言环境,但是 dataHandler 实例在那里不可用,因为注入发生在 onCreate 方法中,该方法在 attachBaseContext 调用之后运行。 dataHandler始终为空。我正在使用 kodein、android studio、kotlin。

0 投票
1 回答
127 浏览

android - 无法将最新的 Kodein 版本添加到 KMM 项目

我遇到了以下问题:我需要将 Kodein 添加到 KMM 项目的 Android 部分。为此,我将 Kodein 人工制品添加到模块的 build.gradle 文件中:

并在项目级 build.gradle 中添加了一些行:

但是模块中没有识别出任何 Kodein 类。但是当我将人工制品的版本更改为

找到类,但我在编译时收到以下错误:

所以看起来这些版本是不兼容的。怎么了?我该如何解决这个问题?