org.kodein.di.Kodein $ NotFoundException:未找到具有<LoginFragment>的bind <LLApi>的绑定 {? }

问题描述

我正在使用objectBox +改造+ kodein进行项目。 但是我遇到了这个错误

org.kodein.di.Kodein $ NotFoundException:未找到带有?()的bind()的绑定。 {? }

KodeinApplication.kt

<link href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/vue@2.x/dist/vue.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.min.js"></script>

<div id="app">
  <v-app>
    <v-container fluid>
     <v-autocomplete :items="countries" label="Country" placeholder="Country" outlined dense></v-autocomplete>

     <v-select :items="coins" label="Coin" placeholder="Coin" outlined dense></v-select>
    </v-container>
  </v-app>
</div>

}

BaseRepository.kt

class KodeinApplication : Application(),KodeinAware {
override val kodein = Kodein.lazy {
    import(androidXModule(this@KodeinApplication))

    bind() from singleton { AppVersion }
    bind() from singleton { NetworkConnectivityInterceptor(instance()) }
    bind() from singleton { LLApi }
    bind() from singleton { LoginRepository(instance(),instance()) }
    bind() from provider { LoginviewmodelFactory(instance()) }
}

){ 抽象乐趣loadData():LiveData 内联乐趣fetchData(跨内联调用:(LLApi)-> Deferred ):LiveData { val result = mutablelivedata()

abstract class BaseRepository<T>(
val service: LLApi,@PublishedApi internal val BoxStore: BoxStore

}

LoginRepository.Kt

    Coroutinescope(dispatchers.IO).launch {
        val request = call(service)
        withContext(dispatchers.Main) {
            try {
                val response = request.await()
                if (response.isSuccessful) {
                    result.value = response.body()
                } else {
                    Timber.d("Error occurred with code ${response.code()}")
                }
            } catch (e: HttpException) {
                Timber.d("Error: ${e.message()}")
            } catch (e: Throwable) {
                Timber.d("Error: ${e.message}")
            }
        }
    }
    return result
}

inline fun <reified T : Any> savetoDatabase(data: T) {
    Coroutinescope(dispatchers.IO).launch {
        BoxStore.BoxFor<T>().removeAll()  // deleting and inserting data to avoid sync issues
        BoxStore.BoxFor<T>().put(data)
    }

}

}

LoginviewmodelFactory.kt

class LoginRepository(service: LLApi,store: BoxStore) :
BaseRepository<UserInfo>(service,store) {

private var loginRequest: LoginRequest? = null
init {
    this.loginRequest = loginRequest
}

override fun loadData(): LiveData<UserInfo> {
    return fetchData { service.userLogin(loginRequest) }
}

}

Loginviewmodel.kt

 class LoginviewmodelFactory(private val repository: LoginRepository) :
viewmodelProvider.NewInstanceFactory() {
override fun <T : viewmodel?> create(modelClass: Class<T>): T {
    return Loginviewmodel(repository) as T
}

}

LoginRequest.kt

class Loginviewmodel(val repository: LoginRepository) : Baseviewmodel<UserInfo>() {
private lateinit var user: LiveData<UserInfo>
override fun getDataFromService(): LiveData<UserInfo> {
    user = repository.loadData()
    return user
}

override fun savetoDatabase(data: UserInfo) {
    repository.savetoDatabase(data)
}

LoginFragment.kt

data class LoginRequest(
@Serializedname("mobile_no") val mobileNumber:String?,val password:String?

}

请随时询问任何所需的文件,请解决此问题。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)