【问题标题】:Koin 2.2.1 : I cannot use "by viewModel" in ActivityKoin 2.2.1:我不能在 Activity 中使用“by viewModel”
【发布时间】:2020-11-22 10:39:33
【问题描述】:

不能在 Activity 中使用“by viewModel”

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

private val mainViewModel: MainViewModel by viewModel()

我的活动扩展了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 <reified T : ViewModel> ComponentActivity.viewModel(
        qualifier: Qualifier? = null,
        noinline state: BundleDefinition? = null,
        noinline owner: ViewModelOwnerDefinition = { from(this, this) },
        noinline parameters: ParametersDefinition? = null,
): Lazy<T> {
    return lazy(LazyThreadSafetyMode.NONE) {
        getViewModel(qualifier, state, owner, parameters)
    }
}

在 Fragment 中,viewModelsharedViewModel 都可以正常工作。

private val viewModel by viewModel<SearchViewModel>()
private val mainViewModel by sharedViewModel<MainViewModel>()

问题: 使用 Koin 2.2.0+ 版本在 Activity 中注入 ViewModel 的最佳方法是什么?

【问题讨论】:

    标签: android android-studio kotlin android-viewmodel koin


    【解决方案1】:

    我手动添加的,效果很好。

    import org.koin.androidx.viewmodel.ext.android.viewModel
    

    【讨论】:

      【解决方案2】:

      我缺少 koin-android 依赖项:

      // Koin for the dependencies injections
      def koin_version = "3.1.2"
      implementation "io.insert-koin:koin-core:$koin_version"
      implementation "io.insert-koin:koin-test:$koin_version"
      implementation "io.insert-koin:koin-android:$koin_version"
      implementation "io.insert-koin:koin-core-ext:$koin_version"
      

      【讨论】:

        猜你喜欢
        • 2023-04-03
        • 1970-01-01
        • 1970-01-01
        • 2023-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多