kodein,将数据注入到简单 class

kodein, inject data to simple class

我是 kotlin 和 kodein 开发的新手。 我想将数据注入到一个简单的 class 中,它什么也不扩展。

我的 MainActivity 延伸 KodeinAppCompatActivity(), 我扩展 KodeinSupportFragment() 的片段从我的简单 class CallType 调用了一个函数。但是这个函数必须从另一个简单的 class ConnectivitySate 改变一个布尔值。我不想使用静态值。

下面是我的代码:

    class App : Application(), KodeinAware {

override val kodein by Kodein.lazy {
    import(autoAndroidModule(this@App))

    bind<CallType>() with instance(CallType())
    bind<ConnectivityState>() with instance(ConnectivityState())
    bind<ContactData>() 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 :

class CallType {

fun call(number: String) {

   // !! I want to change gsmState value from ConnectivityState class
   connectivityState.gsmState = true

}

我的连接状态class:

class ConnectivityState {

    var gsmState = false

}

这是许多其他人中的一个例子,因为在很多情况下,我都是这样被屏蔽的。我尝试了很多东西,但我总是有这样的错误:value not injected

非常感谢您的回复..

当您调用 super.onCreate() 时,它会调用 onCreateView,因此行 callType.call(callType.callNumber)initializeInjector() 之前被调用

请注意,您应该始终在 调用 super.onCreate():

之前调用 initializeInjector()
override fun onCreate(savedInstanceState: Bundle?) {
    initializeInjector()
    super.onCreate(savedInstanceState)
}