android studio не может разрешить символ ViewModelProvider

#android #viewmodel #android-livedata #livecycle

Вопрос:

Я столкнулся с этой проблемой Android , которая не может идентифицировать класс ViewModelProvider, и я искал здесь в stackoverflow об этой же проблеме, и все ответы не помогли ,

вот мои зависимости :

 implementation fileTree(dir: "libs", include: ["*.jar"])
implementation 'androidx.appcompat:appcompat:1.3.1'
implementation 'androidx.constraintlayout:constraintlayout:2.1.1'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
implementation 'com.jakewharton:butterknife:10.2.3'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.3'

def lifecycle_version = "2.4.0-rc01"
def arch_version = "2.1.0"


// ViewModel
implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version"
// LiveData
implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version"
// Lifecycles only (without ViewModel or LiveData)
implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version"

// Annotation processor
annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"
// alternately - if using Java8, use the following instead of lifecycle-compiler
implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version"
 

и это мой класс ViewModel :

     package com.example.myapplication.UI;

import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;


import pojo.Movie;

public class MovieViewModel extends ViewModel {

    MutableLiveData<String> movieMutableLiveData= new MutableLiveData<>();

    private Movie getData(){
   return  new Movie("lina ");
    }

    public void getMovieName(){
        String name= getData().getName();
        movieMutableLiveData.setValue(name);
    }
}
 

и это моя основная деятельность :

     package com.example.myapplication.UI;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModel;
import androidx.lifecycle.AndroidViewModel;


import com.example.myapplication.R;

import butterknife.BindView;
import butterknife.ButterKnife;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    MovieViewModel movieViewModel;

    @BindView(R.id.textView)
    TextView textView;
    @BindView(R.id.button)
    Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);

        button.setOnClickListener(this);

        movieViewModel= new ViewModelProvider(this).get(MovieViewModel.class);

        movieViewModel.movieMutableLiveData.observe(this, new Observer<String>() {
            @Override
            public void onChanged(String s) {
                textView.setText(s);
            }
        });

    }

    @Override
    public void onClick(View v) {
if (v.getId()==R.id.button){
movieViewModel.getMovieName();
}
    }
}
 

я , кажется , не могу понять , в чем проблема, потому что я скопировал те же зависимости с официального сайта Android, и проблема все та же, даже ответы здесь, на форуме, не смогли решить эту проблему, пожалуйста, помогите

Комментарии:

1. Вы, кажется, пропускаете import заявление: import androidx.lifecycle.ViewModelProvider;

2. даже после того, как я добавил инструкцию import, я получил ту же ошибку

3. Вы пробовали очистить и перестроить проект?

4. Попробуйте вернуться к тому, чтобы lifecycle_version быть 2.3.1 вместо RC.

5. это сработало , спасибо, я изменил версию жизненного цикла на 2.3.0