Как вставить и внедрить arraylist в любой сервис или класс активности, используя инъекцию зависимости kodein? - PullRequest
0 голосов
/ 24 октября 2019

Недавно я начал изучать внедрение зависимостей kodein здесь, я пытаюсь загрузить данные в ArrayList, а затем внедрить этот ArrayList в желаемый сервис или действие, однако я не могу это сделать, и, сталкиваясь со сбоями во время выполнения, любые рекомендации будут оценены.!

Мой класс обслуживания:

class NotificationAccessibilityService() : AccessibilityService(),KodeinAware {
    override val kodein: Kodein = Kodein.lazy{
      import(AppModules().appModule(applicationContext))
    }
    val logger by instance<Logger>()
fun insertdata(){
//trying to insert data into arraylist
  logger.list = ArrayList()
  logger.list.add(mNodeInfo)
}
}

Класс AppModules:

class AppModules()  {
    fun appModule(context:Context) = Kodein.Module{
        bind<Logger>() with  singleton { AndroidLogger() }
    }
}

Интерфейс регистратора:

interface Logger {
    var list:ArrayList<AccessibilityNodeInfo>
}

Класс регистратора:

class AndroidLogger() : Logger  {
    override var list: ArrayList<AccessibilityNodeInfo>
        get() = TODO("not implemented")
        set(value) {}
}

В своей Деятельности я расширяю kodeinaware, а затем пытаюсь получить доступ к этому ArrayList из kodein, однако приложение падает:

class NormalCopy : AppCompatActivity(),KodeinAware {
    override val kodein: Kodein by closestKodein()

    val logger by kodein.instance<Logger>()

    var accesslist = logger.list

} 

1 Ответ

0 голосов
/ 24 октября 2019

Извините, может быть, я вас неправильно понял, но похоже, что вы просто должны удалить TODO из вашей Logger реализации

class AndroidLogger() : Logger {
    override var list: ArrayList<AccessibilityNodeInfo> = arrayListOf()
}
...