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

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

Любой другой вопрос, который я нашел на эту тему исправляла extends Activity до 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;
}

Ответы

Ответ 1

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

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

Спасибо @Muthukrishnan Rajendran

Ответ 2

Если вы используете androidx, вам нужно это:

implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0'

Ответ 3

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

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

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

Ответ 4

В файле build.gradle добавьте эти строки в блок зависимостей

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

Ответ 5

Вы должны добавить библиотеку в свой проект build.gradle

def lifecycle_version = "2.0.0"

// ViewModel and LiveData
implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"

Ответ 6

Я решаю эту проблему из официальной документации Android. Добавьте ниже в build.grale

def lifecycle_version = "2.0.0"
// ViewModel and LiveData
implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"

Ответ 7

Используйте библиотеки androix

+ Изменить

implementation 'com.android.support:appcompat-v7:28.0.0'

в

implementation 'androidx.appcompat:appcompat:1.1.0-alpha03'

Ты можешь использовать

Refactor>Migrate to AndroidX

Ответ 8

У меня такая же проблема. Ни одно из других решений не помогло мне.

Я понял, что использую import androidx.lifecycle.ViewModelProvider; вместо import androidx.lifecycle.ViewModelProviders;.

Поэтому убедитесь, что вы используете import androidx.lifecycle.ViewModelProviders;. Это ViewModelProviders с s.