Не удается разрешить метод android.support.v4.app.FragmentActivity в ViewModelProviders - PullRequest
0 голосов
/ 27 февраля 2019

Я пытаюсь реализовать компонент архитектуры в своем приложении, но когда мне нужно добавить lifecycleowner к моей модели представления внутри моего фрагмента с помощью getActivity() его сообщения показа

Не удается разрешить метод android.support.v4.app.FragmentActivity

Это мой код:

 viewModel = ViewModelProviders.of(getActivity()).get(MyViewModel.class);
        viewModel.setToken(token);
        viewModel.getRecent().observe(getActivity(), new Observer<List<Recent>>() {
            @Override
            public void onChanged(List<Recent> recent) {
                adapter.setData(recent);
            }
        });

Мой фрагмент получен из android.support.v4.app.Fragment

, а MyActivity расширяется AppCompatActivity

и это мой файл Gradle:

    def paging_version = "2.1.0"
    def lifecycle_version = "2.0.0"
    def room_version = "2.1.0-alpha04"

    implementation "androidx.room:room-runtime:$room_version"
    annotationProcessor "androidx.room:room-compiler:$room_version"
    implementation "androidx.paging:paging-runtime:$paging_version"
    implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
    implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version"

Как мне решить эту проблему?заранее спасибо.

1 Ответ

0 голосов
/ 27 февраля 2019

Проблема

В androidx.lifecycle.ViewModelProviders.of(FragmentActivity) они принимают androidx.fragment.app.FragmentActivity, а не android.support.v4.app.FragmentActivity.

Решение

  1. Перенос всего проекта на AndroidX с использованием Migrate to AndroidX, представленного в Android Studio 3.2.Вы можете найти информацию на этой странице
  2. Изменить версию зависимостей для поддержки версии библиотеки.Версия зависимостей может быть найдена эта страница
dependencies {
    def lifecycle_version = "1.1.1"

    // ViewModel and LiveData
    implementation "android.arch.lifecycle:extensions:$lifecycle_version"
    // alternatively - just ViewModel
    implementation "android.arch.lifecycle:viewmodel:$lifecycle_version" // For Kotlin use viewmodel-ktx
    // alternatively - just LiveData
    implementation "android.arch.lifecycle:livedata:$lifecycle_version"
    // alternatively - Lifecycles only (no ViewModel or LiveData).
    //     Support library depends on this lightweight import
    implementation "android.arch.lifecycle:runtime:$lifecycle_version"

    annotationProcessor "android.arch.lifecycle:compiler:$lifecycle_version" // For Kotlin use kapt instead of annotationProcessor
    // alternately - if using Java8, use the following instead of compiler
    implementation "android.arch.lifecycle:common-java8:$lifecycle_version"

    // optional - ReactiveStreams support for LiveData
    implementation "android.arch.lifecycle:reactivestreams:$lifecycle_version"

    // optional - Test helpers for LiveData
    testImplementation "android.arch.core:core-testing:$lifecycle_version"
}
...