Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin org.kodein.di.kodein$NotFoundException:未找到绑定的绑定<;LLApi>;()与?<;LoginFragment>;().? { ? }_Kotlin_Retrofit2_Objectbox_Kodein - Fatal编程技术网

Kotlin org.kodein.di.kodein$NotFoundException:未找到绑定的绑定<;LLApi>;()与?<;LoginFragment>;().? { ? }

Kotlin org.kodein.di.kodein$NotFoundException:未找到绑定的绑定<;LLApi>;()与?<;LoginFragment>;().? { ? },kotlin,retrofit2,objectbox,kodein,Kotlin,Retrofit2,Objectbox,Kodein,我正在用objectbox+Reformation+kodein做一个项目。 但我得到了这个错误 org.kodein.di.kodein$NotFoundException:找不到带?()的bind()的绑定。?{?} KodeInApp.kt class KodeinApplication : Application(), KodeinAware { override val kodein = Kodein.lazy { import(androidXModule(this@Kode

我正在用objectbox+Reformation+kodein做一个项目。 但我得到了这个错误

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

KodeInApp.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()) }
}
}

BaseRepository.kt

abstract class BaseRepository<T>(
val service: LLApi,
@PublishedApi internal val boxStore: BoxStore
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) }
}
 class LoginViewModelFactory(private val repository: LoginRepository) :
ViewModelProvider.NewInstanceFactory() {
override fun <T : ViewModel?> create(modelClass: Class<T>): T {
    return LoginViewModel(repository) as T
}
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

class LoginFragment() : Fragment(), KodeinAware {
override val kodein by kodein()
private  val factory: LoginViewModelFactory by instance()
private  lateinit var binding: LoginFragmentBinding
private  lateinit var viewModel: LoginViewModel

private var emailOrPhone: EditText? = null
private var password: EditText? = null

companion object {
    fun newInstance(): LoginFragment {
        return LoginFragment()
    }
}

override fun onCreateView(
    inflater: LayoutInflater,
    container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {

    binding = DataBindingUtil.setContentView(requireActivity(), R.layout.login_fragment)
    viewModel = ViewModelProvider(
        this, factory
        
    ).get(LoginViewModel::class.java)

    val view = inflater.inflate(R.layout.login_fragment, container, false)
    emailOrPhone = view?.findViewById(R.id.edt_number_or_email)
    password = view?.findViewById(R.id.edt_password)
    return view
}

fun userLoginService() {
    val email = binding.edtNumberOrEmail.text.toString()
    val password = binding.edtPassword.text.toString()


     val liveData = viewModel.getDataFromService()
     liveData.observe(this, Observer {
         if (it != null) {
             viewModel.saveTODatabase(it)
         }
     })
}
}

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

可能有帮助?可能有帮助?
data class LoginRequest(
@SerializedName("mobile_no") val mobileNumber:String?,
val password:String?
class LoginFragment() : Fragment(), KodeinAware {
override val kodein by kodein()
private  val factory: LoginViewModelFactory by instance()
private  lateinit var binding: LoginFragmentBinding
private  lateinit var viewModel: LoginViewModel

private var emailOrPhone: EditText? = null
private var password: EditText? = null

companion object {
    fun newInstance(): LoginFragment {
        return LoginFragment()
    }
}

override fun onCreateView(
    inflater: LayoutInflater,
    container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {

    binding = DataBindingUtil.setContentView(requireActivity(), R.layout.login_fragment)
    viewModel = ViewModelProvider(
        this, factory
        
    ).get(LoginViewModel::class.java)

    val view = inflater.inflate(R.layout.login_fragment, container, false)
    emailOrPhone = view?.findViewById(R.id.edt_number_or_email)
    password = view?.findViewById(R.id.edt_password)
    return view
}

fun userLoginService() {
    val email = binding.edtNumberOrEmail.text.toString()
    val password = binding.edtPassword.text.toString()


     val liveData = viewModel.getDataFromService()
     liveData.observe(this, Observer {
         if (it != null) {
             viewModel.saveTODatabase(it)
         }
     })
}