kodein,将数据注入简单的类
我是kotlin和kodein开发新的。 我想将数据注入一个简单的类,它不扩展。
我有我的MainActivity
扩展KodeinAppCompatActivity()
,我的片段,它扩展KodeinSupportFragment()
从我的简单类CallType
调用一个函数。 但是这个函数必须改变其他简单类ConnectivitySate
的布尔值。 我不想使用静态值。
下面,我的代码:
class App : Application(), KodeinAware { override val kodein by Kodein.lazy { import(autoAndroidModule(this@App)) bind() with instance(CallType()) bind() with instance(ConnectivityState()) bind() with instance(ContactData()) } override fun onCreate() { super.onCreate() registerActivityLifecycleCallbacks(androidActivityScope.lifecycleManager) }
主要活动 :
class MainActivity : KodeinAppCompatActivity() {
我的片段:
class JournalFragment : KodeinSupportFragment(){ private val callType: CallType by instance() @SuppressLint("MissingSuperCall") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) initializeInjector() } override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?,savedInstanceState: Bundle?): View? { // !! CALL MY FUNCTION !! callType.call(callType.callNumber) } .... @SuppressLint("MissingSuperCall") override fun onDestroy() { super.onDestroy() destroyInjector() }
我简单的课程:
class CallType { fun call(number: String) { // !! I want to change gsmState value from ConnectivityState class connectivityState.gsmState = true }
我的ConnectivityState类:
class ConnectivityState { var gsmState = false }
这是很多其他的例子,因为在很多情况下,我都是这样封锁的。 我已经尝试了很多东西,但我总是喜欢错误: value not injected
非常感谢您的回复..
当你调用super.onCreate()
,它会调用onCreateView
,所以在 initializeInjector()
之前调用callType.call(callType.callNumber)
这一行。
请注意, 在调用super.onCreate()
之前 ,应始终调用initializeInjector()
super.onCreate()
:
override fun onCreate(savedInstanceState: Bundle?) { initializeInjector() super.onCreate(savedInstanceState) }
- 无法让dokka在gradle / android项目上生成kotlin文档
- Android RxJava取消旧请求
- Android室查询数据库更改
- android数据绑定单元测试错误解析数据绑定编译器选项失败。 PARAMS:
- gradle插件3.0后,kotlin单元测试失败
- Dagger2 – FragmentSubcomponentBuilder没有实现AndroidInjector.Factory
- 无法使用kotlinx.serialization将Json解析为数据类
- Kotlin:何时以及如何使用Lambda表达式
- 什么是OkHttp客户端的最佳/较少错误倾向的缓存大小(用于exoplayer)