web-dev-qa-db-ja.com

AppCompatActivityのシンボルViewModelProvidersを解決できません

私のViewModelを機能させようとしているのですが、これまでのところうまくいきません。 Android StudioにエラーCannot resolve symbol 'ViewModelProviders'が表示されます。

このトピックに関して私が見つけた他のすべての質問はextends Activityextends 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;
}
75
Sheler

私は自分のビルドに両方の依存関係がなかったので、問題があります。

implementation "Android.Arch.lifecycle:extensions:1.1.0"
implementation "Android.Arch.lifecycle:viewmodel:1.1.0"

ありがとう@Muthukrishnan Rajendran

147
Sheler

androidxを使用している場合は、これが必要です。

implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0-rc01'
41
Babao

コンパイル済みのSDKバージョン28以降を使用している場合は、ViewModelおよびLiveDataを取得するために単一の依存関係を追加するだけで済みます。

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

    // ViewModel and LiveData
    implementation "Android.Arch.lifecycle:extensions:$lifecycle_version"
}
11
L-X

Android公式ドキュメント からこの問題を解決します。以下をbuild.graleに追加

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

Build.gradleファイルで、dependenciesブロックにこれらの行を追加します。

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

2
Sulav Timsina

プロジェクトのbuild.gradleにライブラリを追加する必要があります。

def lifecycle_version = "2.0.0"

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

androixライブラリを使う

変化する

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

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

あなたが使用することができます

Refactor>Migrate to AndroidX
1
Sebastian Duran