0

我正在尝试使用以下架构构建应用程序:LoginActivity -> MainActivity -> MainActivity 托管的片段中处理的所有其他内容。我也是第一次使用 Kodein 框架,并在我的起始片段中收到以下错误:

属性委托必须有一个 'provideDelegate(HomeFragment, KProperty*>' 方法。以下函数都不适合。在 org.kodein.di.android.KodeinPropertyDelegateProvider 类型中定义的provideDelegate(Context [红色突出显示], KProperty< >?) 'KodeinPropertyDelegateProvider' 没有方法 'getValue(HomeFragment, KProperty< >)',因此它不能用作委托

到目前为止,这是我的代码:

class HomeFragment : Fragment(), KodeinAware {

override val kodein by kodein()
private val factory : MainViewModelFactory by instance()
private lateinit var viewModel: MainViewModel

override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    // Inflate the layout for this fragment
    val binding : FragmentHomeBinding = FragmentHomeBinding.inflate(inflater, container, false)

    viewModel = ViewModelProviders.of(this, factory).get(MainViewModel::class.java)
    binding.viewModel = viewModel

    return binding.root
}

}

我怎样才能解决这个问题?

谢谢 :)

4

3 回答 3

0

没关系,在kodein成功之后添加类型声明...... :)

于 2020-04-08T11:56:43.850 回答
0

在你的进口改变

import org.kodein.di.android.kodein

import org.kodein.di.android.x.kodein
于 2020-06-17T12:39:34.997 回答
0

你可以这样做:

override val kodein:Kodein by kodein()
于 2021-02-03T09:43:02.000 回答