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

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

アプリのビュー バインディングに Kotlin 合成をまだ使用していない場合は、ビュー バインディングをご覧ください。

Gradle ファイルを更新する

Android 拡張機能と同様に、Jetpack ビュー バインディングはモジュールごとに有効化されます。 あります。ビュー バインディングを使用するモジュールごとに、viewBinding ビルドを設定します。 次のように、モジュール レベルの build.gradle ファイルで 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 レイアウト ファイルごとにバインディング クラスが生成される 渡されます。このバインディング クラスの名前は XML ファイル ファイルの末尾に Binding という単語を追加したパスカルケースのファイルです。たとえば レイアウト ファイルの名前は 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

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