Kotlin 合成から Jetpack ビュー バインディングに移行する

Kotlin Android 拡張機能は非推奨になったため、ビュー バインディングに Kotlin 合成を使用することはできません。アプリでビュー バインディングに Kotlin 合成を使用している場合は、このガイドを使用して Jetpack ビュー バインディングに移行してください。

アプリでビュー バインディングに Kotlin 合成をまだ使用していない場合は、ビュー バインディングで基本的な使用方法を確認してください。

Gradle ファイルを更新する

Android 拡張機能と同様に、Jetpack ビュー バインディングはモジュールごとに有効になります。ビュー バインディングを使用するモジュールごとに、モジュール レベルの build.gradle ファイルで viewBinding ビルド オプションを true に設定します。

Groovy

android {
    ...
    buildFeatures {
        viewBinding true
    }
}

Kotlin

android {
    ...
    buildFeatures {
        viewBinding = true
    }
}

アプリで Parcelable 機能を使用しない場合は、Kotlin Android 拡張機能を有効にする行を削除します。

Groovy

plugins {
  id 'kotlin-android-extensions'
}

Kotlin

plugins {
    kotlin("android.extensions")
}

モジュールでビュー バインディングを有効にする方法については、設定手順をご覧ください。

アクティビティとフラグメント クラスを更新する

Jetpack ビュー バインディングでは、モジュールに含まれる XML レイアウト ファイルごとにバインディング クラスが生成されます。このバインディング クラスの名前は、末尾に Binding という単語が追加されたパスカルケース形式の XML ファイルの名前です。たとえば、レイアウト ファイルの名前が result_profile.xml の場合、生成されるバインディング クラスの名前は ResultProfileBinding です。

ビューを参照する合成プロパティの代わりに生成されたバインディング クラスを使用するには、次の手順でアクティビティ クラスとフラグメント クラスを変更します。

  1. kotlinx.android.synthetic からすべてのインポートを削除します。

  2. 使用するアクティビティまたはフラグメントについて、生成されたバインディング クラスのインスタンスをインフレートします。

  3. 合成プロパティではなくバインディング クラス インスタンスを使用するように、すべてのビューの参照を変更します。

// Reference to "name" TextView using synthetic properties.
name.text = viewModel.nameString

// Reference to "name" TextView using the binding class instance.
binding.name.text = viewModel.nameString

詳細については、ビュー バインディング ガイドの使用方法をご覧ください。