我有一个现有的 android java 项目,我正在为 DI 介绍 Koin。
在我的活动中,我一直在使用
private Lazy<DeckActivityViewModel> viewModel = inject(DeckActivityViewModel.class);
我想在多个片段之间共享视图模型,所以想知道是否有一个等效于“by sharedViewModel()”的java来这样做?
Java 不支持属性委托,而 koin 使用属性委托来提供inject()
,viewModel()
和sharedViewModel()
. 所以,答案是你不能在java中使用它。
对于您的 Java Fragment
,必须使用sharedViewModel
或getSharedViewModel
来自SharedViewModelCompat
:
private Lazy<DeckActivityViewModel> viewModel = SharedViewModelCompat.sharedViewModel(this, DeckActivityViewModel.class);