Ответ 1
У меня не было обеих зависимостей в моей сборке, поэтому проблема.
implementation "android.arch.lifecycle:extensions:1.1.0"
implementation "android.arch.lifecycle:viewmodel:1.1.0"
Спасибо @Muthukrishnan Rajendran
Эй, я пытаюсь заставить свою 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;
}
У меня не было обеих зависимостей в моей сборке, поэтому проблема.
implementation "android.arch.lifecycle:extensions:1.1.0"
implementation "android.arch.lifecycle:viewmodel:1.1.0"
Спасибо @Muthukrishnan Rajendran
Если вы используете androidx
, вам нужно это:
implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0'
Если вы используете скомпилированную версию sdk 28 или выше, вам нужно добавить только single dependecy, чтобы получить ViewModel
и LiveData
dependencies {
//...
def lifecycle_version = "1.1.1"
// ViewModel and LiveData
implementation "android.arch.lifecycle:extensions:$lifecycle_version"
}
В файле 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"
...
}
Вы должны добавить библиотеку в свой проект build.gradle
def lifecycle_version = "2.0.0"
// ViewModel and LiveData
implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
Я решаю эту проблему из официальной документации Android. Добавьте ниже в build.grale
def lifecycle_version = "2.0.0"
// ViewModel and LiveData
implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
Используйте библиотеки androix
+ Изменить
implementation 'com.android.support:appcompat-v7:28.0.0'
в
implementation 'androidx.appcompat:appcompat:1.1.0-alpha03'
Ты можешь использовать
Refactor>Migrate to AndroidX
У меня такая же проблема. Ни одно из других решений не помогло мне.
Я понял, что использую import androidx.lifecycle.ViewModelProvider;
вместо import androidx.lifecycle.ViewModelProviders;
.
Поэтому убедитесь, что вы используете import androidx.lifecycle.ViewModelProviders;
. Это ViewModelProviders
с s
.