100%KotlinアプリでViewModelを実装しようとしています。私が見つけることができるすべてのドキュメントは、これを使用してViewModelインスタンスを取得したいと言っています:
ViewModelProviders.of(this).get(CustomViewModel::class.Java)
ドキュメントによると、これでインポートできるはずです:
import Android.Arch.lifecycle.ViewModelProviders
ただし、このインポートは未解決です。ビルドファイルで次を使用しています。
def androidArchVersion = '1.1.1'
implementation "Android.Arch.lifecycle:viewmodel:$androidArchVersion"
implementation "Android.Arch.lifecycle:livedata:$androidArchVersion"
annotationProcessor "Android.Arch.lifecycler:compiler:$androidArchVersion"
testImplementation "Android.Arch.core:core-testing:$androidArchVersion"
ViewModelProviders
にアクセスできないのはなぜですか?
依存関係として次を含めます。
implementation "Android.Arch.lifecycle:extensions:1.1.1"
この依存関係は、ViewModelとLiveDataの両方に対するものであるため、同じものに対して個別の依存関係を指定する必要はありません。つまり、あなたが示した最初の2つの依存関係は、前述のライフサイクル拡張の依存関係に置き換えることができます。
Sup の提案に加えて、lifecycler:compiler
からlifecycle:compiler
-Gradle同期は、このタイプミスでは正常に完了しません。
第二に、標準のAndroid注釈処理( "annotationProcessor")はKotlinでは実際には機能しません。代わりに、Kotlinのkaptを使用します。
Build.gradleファイルの先頭に、次を追加します。
apply plugin: 'kotlin-kapt'
。
そして、依存関係セクションで、(上記のような)annotationProcessor
の出現箇所をkapt
に置き換えます。
kapt "Android.Arch.lifecycle:compiler:1.1.1"
AndroidStudio 3.0.1でこの種の問題に直面し、適切なbuild.gradleに次の依存関係を追加することで解決しました。
implementation "Android.Arch.lifecycle:extensions:1.1.1"
annotationProcessor "Android.Arch.lifecycle:compiler:1.1.1"
androidStudioが異なる場合はバージョンコードが異なるため、バージョンコードは異なる場合があります。
これは、minSdkVersionを21にターゲットすることでも解決できます。
あなたが持っている場合 minSdkVersion 21
以上、必要ありませんimplementation "Android.Arch.lifecycle:extensions:1.1.1"
。