Koin 2.2.1:我无法在Activity中使用"by viewModel"。

9 浏览
0 Comments

Koin 2.2.1:我无法在Activity中使用"by viewModel"。

无法从Activity使用"by viewModel"

我想为一个Activity注入一个ViewModel,所以我尝试了这个。但是失败了,Android Studio找不到它的引用。

private val mainViewModel: MainViewModel by viewModel()

我的Activity继承自AppCompatActivity,并且gradle依赖项包括以下库:

implementation 'androidx.core:core-ktx:1.3.2'

def koin_version = '2.2.1'

implementation "org.koin:koin-android:$koin_version"

implementation "org.koin:koin-androidx-scope:$koin_version"

implementation "org.koin:koin-androidx-viewmodel:$koin_version"

implementation "org.koin:koin-androidx-fragment:$koin_version"

implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$koin_version"

我尝试过的方法:

下面的代码可以工作,但是我想使用Koin 2.2.0的新默认"SavedStateHandle"功能。

private val mainViewModel: MainViewModel by inject()

我发现这段代码已经包含了,但是Android Studio找不到它。

ActivityExt.kt:

inline fun ComponentActivity.viewModel(

qualifier: Qualifier? = null,

noinline state: BundleDefinition? = null,

noinline owner: ViewModelOwnerDefinition = { from(this, this) },

noinline parameters: ParametersDefinition? = null,

): Lazy {

return lazy(LazyThreadSafetyMode.NONE) {

getViewModel(qualifier, state, owner, parameters)

}

}

在Fragment中,viewModel和sharedViewModel都可以正常工作。

private val viewModel by viewModel()

private val mainViewModel by sharedViewModel()

问题:

在Koin 2.2.0+版本中,注入ViewModel的最佳方法是什么?

0