[Android]lifecycleライブラリ2.2.0からViewModelProviders.ofが非推奨になっちゃった件

AndroidにおけるGoogle先生推奨の設計パターン「MVVM」の中核をなす「ViewModel」を使うためのライフサイクル(lifecycle)ライブラリが、2.2.0にアップデートされたことによって、ViewModelのインスタンスを取得するための「ViewModelPrviders.of」メソッドが非推奨になってしまいました、、、

ですので、バージョン2.2.0以降は、

1)Fragmentのktxライブラリを入れる(appレベルのbuild.gradleファイル)

implementation "androidx.fragment:fragment-ktx:1.2.1"

(1.2.1の箇所は最新バージョンに)

 

2)Java8言語機能を使えるように設定(appレベルのbuild.gradleファイル)

compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    // For Kotlin projects
    kotlinOptions {
        jvmTarget = "1.8"
}

 

3)ViewModelのインスタンス取得方法のコード修正

 

他のFragmentとViewModelを共有しない場合は「by viewModels()」

他のFragmentとViewModelを共有する場合(SharedViewModel)は「by activityViewModels()」を使用します。

これで、これまで「lateinit var」だったのを「val」にすることが出来ます。

(詳しくは、下の動画で解説していますので、よろしければご覧ください)

こんな記事も読まれています

おすすめコンテンツ




Flutter(フラッター)


みんプロ作成アプリ




TOP