انتقال از Kotlin synthetics به Jetpack view binding

«افزونه‌های Kotlin Android» منسوخ شده است، یعنی استفاده از ترکیبات Kotlin برای اتصال نما دیگر پشتیبانی نمی‌شود. اگر برنامه‌تان از Kotlin synthetics برای اتصال نما استفاده می‌کند، از این راهنما برای انتقال به اتصال نمای Jetpack استفاده کنید.

اگر برنامه‌تان ازقبل از Kotlin synthetics برای اتصال نما استفاده نمی‌کند، برای اطلاعات استفاده پایه، به اتصال نما مراجعه کنید.

به‌روزرسانی فایل Gradle

مانند Android Extensions، اتصال نمای Jetpack بر اساس ماژول به ماژول فعال می‌شود. برای هر پیمانه‌ای که از اتصال نما استفاده می‌کند، گزینه ساخت viewBinding را در فایل build.gradle سطح پیمانه روی true تنظیم کنید:

شیک

android {
    ...
    buildFeatures {
        viewBinding true
    }
}

کاتلین

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

اگر برنامه‌تان از ویژگی‌های Parcelable استفاده نمی‌کند، خطی را که «افزونه‌های Kotlin Android» را فعال می‌کند بردارید:

شیک

plugins {
  id 'kotlin-android-extensions'
}

کاتلین

plugins {
    kotlin("android.extensions")
}

برای کسب اطلاعات بیشتر درباره فعال کردن اتصال نما در یک ماژول، به دستورالعمل‌های راه‌اندازی مراجعه کنید.

کلاس‌های فعالیت و قطعه را به‌روز کنید

با Jetpack view binding، یک کلاس اتصال برای هر فایل چیدمان 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

برای کسب اطلاعات بیشتر، به بخش استفاده در راهنمای اتصال نما مراجعه کنید.