Koin 2.2.1: я не могу использовать viewModel в Activity

Невозможно использовать viewModel из Activity

Я хочу ввести ViewModel для Activity, поэтому я попробовал это. Но это не удалось, 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"

Что я пробовал:

Приведенный ниже код работает, но я хочу использовать новую функцию SavedStateHandle по умолчанию в Koin 2.2.0.

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)
    }
}

Во фрагменте отлично работают и viewModel, и sharedViewModel.

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

Вопрос: Как лучше всего добавить ViewModel в Activity с версией Koin 2.2.0+?


person Stanley Ko    schedule 22.11.2020    source источник


Ответы (1)


Я добавил это вручную, и он отлично работает.

import org.koin.androidx.viewmodel.ext.android.viewModel
person Stanley Ko    schedule 22.11.2020