Не удается разрешить символы ViewModelProviders в AppCompatActivity

Эй, я пытаюсь заставить мою ViewModel работать, но пока не повезло. Android Studio показывает ошибку Cannot resolve symbol 'ViewModelProviders'.

каждый другой вопрос, который я нашел по этой теме, исправлял extends Activity to extends AppCompatActivity, но я расширяю правый. Не знаю, что я упускаю...
Мой код основан на это видео YouTube

MainActivity.java

public class MainActivity extends AppCompatActivity implements
    TileAdapter.TileAdapterOnClickHandler {


private BaseViewModel viewModel;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //set Toolbar
    Toolbar myToolbar = findViewById(R.id.toolbar);
    setSupportActionBar(myToolbar);


    //initialize viewModel
    viewModel = ViewModelProviders.of(this).get(BaseViewModel.class);

BaseViewModel.java

public class BaseViewModel extends ViewModel {

private Movie[] mMovie;

public void init (Movie[] movies){
    this.mMovie = movies;
}

public Movie[] getMovie() {
    return mMovie;
}

4 ответов


У меня не было обеих зависимостей в моей сборке, отсюда и проблемы.

implementation "android.arch.lifecycle:extensions:1.1.0"
implementation "android.arch.lifecycle:viewmodel:1.1.0"

Спасибо @Muthukrishnan Rajendran


Если вы используете скомпилированный sdk версии 28 или выше, вам нужно только добавить один dependecy, чтобы получить ViewModel и LiveData

dependencies {
    //...
    def lifecycle_version = "1.1.1"

    // ViewModel and LiveData
    implementation "android.arch.lifecycle:extensions:$lifecycle_version"
}

Если вы используете androidx, вам это нужно: реализация 'androidx.жизненный цикл:жизненный цикл-расширения:2.0.0-rc01'


в построении.gradle file, добавьте эти строки в блок зависимостей

dependencies {
...
def lifecycle_version = "1.1.1"
// ViewModel and LiveData
implementation "android.arch.lifecycle:extensions:$lifecycle_version"
//if not using java 8,use the following line
annotationProcessor "android.arch.lifecycle:compiler:$lifecycle_version"
//if using java 8,ignore above line and add the following line
implementation "android.arch.lifecycle:common-java8:$lifecycle_version"
...
}

Sample Image of build.gradle file