رونمایی از پخته‌ترین و کاربردی‌ترین محصولات آموزشی سون‌لرن با کلی آفرهای ویژه🔥
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ علیرضا خداوردی
kotlinx.android.synthetic
محسن موحد حل شده توسط محسن موحد

سلام

 با توجه به اینکه پلاگین kotlinx.android منسوخ شده ما نمیتونیم از .synthetic استفاده کنیم درنتیجه از مفهوم viewbinding استفاده کردیم و برای این کار تکه کد زیر را نوشتیم:

private lateinit var binding: ActivityProductDetailBinding

حالا توی زمان اجرا این ارور را نشون میده:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.kafash/com.example.kafash.feature.product.ProductDetailActivity}: kotlin.UninitializedPropertyAccessException: lateinit property binding has not been initialized

و در نهایت صفحه محصول نشون داده نمیشه و برنامه بسته میشه(کرش میکنه)

میشه راهنمایی کنید؟

سلام،

برای استفاده از ViewBinding باید binding را در تابع onCreate مقداردهی کنید.

این خطا احتمالا علتش اینست که متغیر binding با کلمه کلیدی lateinit تعریف کردید ولی شما مقداری به آن ندادید و سعی کردید مستقیم از آن استفاده کنید.

پس باید در تابع onCreate بعد از ست کردن content view، binding را مقداردهی کنید:
 

private lateinit var binding: ActivityProductDetailBinding  
override fun onCreate(savedInstanceState: Bundle?) {
 super.onCreate(savedInstanceState)
 binding = ActivityProductDetailBinding.inflate(layoutInflater)
 setContentView(binding.root)
 // ...
}

احتمالا به این شکل مشکل حل شود.

بهترین پاسخ
محسن موحد ۰۳ آذر ۱۴۰۲، ۲۲:۵۹