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) }