我正在尝试构建一个具有以下架构的应用程序:LoginActivity->MainActivity->在MainActivity托管的片段中处理的所有其他内容。我也是第一次使用Kotein框架,在我的起始片段中出现了以下错误:
属性委托必须具有一个‘provideDelegate(HomeFragment,KProperty*>'方法。以下功能均不适用。provideDelegate(上下文[用红色突出显示],KProperty<>?(已定义在org.kodein.di.android.KodeinPropertyDelegateProvider类型中"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
}
}
我该怎么解决这个问题?
谢谢:(
Nevermind,在kodein完成任务后添加类型声明…:(
在您的导入中更改
import org.kodein.di.android.kodein
至
import org.kodein.di.android.x.kodein
你可以这样做:
override val kodein:Kodein by kodein()