问题标签 [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.
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
}
请随时询问所需的任何文件,并请帮助我解决这个问题..
java - Kodein Scopes,将数据库服务绑定到活动生命周期
在过去的一天里,我一直在尝试在 kodein 中实现一个自定义范围,我正要扯掉我的头发。我的应用程序基于 2 个活动,一个用于登录,另一个在用户登录时(我将其称为 MainActivity)。我有几个单例服务从我在 MainActivity 中的许多片段中使用的 Firestore 数据库获取数据,我目前正在使用 Kodein 获取每个服务的单例对象。
我的服务总结:
还有我的 Kodein 应用程序中的服务
在我的片段中,我只需获取我的 tagsService 类
现在的问题是,当用户退出时,我必须在这种情况下清理所有标签,等待用户登录,创建一个新的查询等等,很多工作。但是,如果这个服务可以以某种方式被“杀死”,然后在用户登录时再次启动(回到 MainActivity,也没有保存它的最后一个状态,只是一个新对象),那么一切都会自动清理,而无需我编写很多代码。
目标:由于 MainActivity 仅在用户登录并经过正确身份验证时才处于“活动状态”,因此我想将生命周期附加到我的 TagsService 对象,每当 MainActivity 死时它也会杀死我的 tagsService ,然后每当 MainActivity “活着”时“重新初始化”再次。
如果很难掌握我想要做什么,我感到非常抱歉,我对 kotlin 和整个编程都很陌生
android - Fragment.viewLifecycleOwnerLiveData.observe 不使用 kodein 调用
我正在制作一个应用程序,我想将我的 UI 逻辑分成多个 UI 类,其中 BaseUi 类是生命周期感知的。我使用 Kodein 作为我的 DI,fragment.viewLifecycleOwnerLiveData.observe
当我的 ui 类的实例被 Kodein 检索时,我遇到了没有被调用的问题。这是我的片段类:
BaseUi 类:
和 UIModule:
kotlin - Ktor / Kodein - 如何编写集成测试
目前我编写了一个小型演示应用程序,它使用 Ktor 作为其应用程序环境,并使用 Kodein 作为依赖注入框架。
在应用程序的初始化过程中,我确实导入了一些模块,其中一个是我想在集成测试的初始化过程中替换的:
在测试中,我想使用不同的persistenceModule,例如。一个内存模块。我的测试初始化如下:
我已经试过打电话
但这让我(很明显)只能访问已经初始化的 Ktor 功能。这样的事情有可能吗?
android - 使用 Kodein DI 时如何防止 ViewModel 重新创建?
我尝试使用 Kodein DI 库并习惯于像这样绑定我的 Repo、NetworkService 和 viewModel
活动 :
我能够使用 viewmodel 并且一切正常,但我注意到在设备旋转时我的 viewmodel 状态没有被保存,或者我的 Activity 正在创建一个新的 ViewModel。我用 ViewModelProviders 方法尝试了这个,并且有效,但是使用 Kodein DI,我的视图模型在设备旋转时再次实例化。
我在这里做错了什么?
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 块中冻结了自己。我设法用这个示例代码重现了它:
所以我的理论如下:
- kodein 尝试提供
FrozenConstructor
类 FrozenConstructor
被创建并冻结自己,它的成员引用了 kodein- kodein 尝试缓存提供的依赖项并尝试改变内部
MutableMap
冻结的内容,一切都崩溃了
有人可以确认这或多或少是正确的,如果不是,请纠正我?
你们还可以建议处理它的最佳方法,以及其他在那里等待的陷阱吗?
它是一个kodein错误吗?
如果我with provider
不使用,为什么 kodein 必须将某些内容存储在可变映射中with singleton
?
build.gradle - 无法在 KMP 应用程序中找到 Kodein-db-0.8.1-beta-samplesources.jar
我想将 Kodein 添加到我的应用程序中,但似乎无法添加。
这是我得到的错误:
我有这个
在我的项目级别 build.gradle.kts 我有这个:
我删除了最后一行,repositories
但仍然失败并出现同样的错误。
android - 如何在 attachBaseContext 中使用 Kodein 实例?
我需要在我的 MainActivity 的 attachBaseContext 中访问我的 SharedPreferences 实例(dataHandler),所以我在那里设置了语言环境,但是 dataHandler 实例在那里不可用,因为注入发生在 onCreate 方法中,该方法在 attachBaseContext 调用之后运行。 dataHandler始终为空。我正在使用 kodein、android studio、kotlin。
android - 无法将最新的 Kodein 版本添加到 KMM 项目
我遇到了以下问题:我需要将 Kodein 添加到 KMM 项目的 Android 部分。为此,我将 Kodein 人工制品添加到模块的 build.gradle 文件中:
并在项目级 build.gradle 中添加了一些行:
但是模块中没有识别出任何 Kodein 类。但是当我将人工制品的版本更改为
找到类,但我在编译时收到以下错误:
所以看起来这些版本是不兼容的。怎么了?我该如何解决这个问题?