Avatar ·

خطأ "Default interface methods are only supported starting with Android 7.0" في Kotlin: كيف أصلحه؟

مرحبًا بالجميع! أنا مبتدئ في Kotlin وتطوير Android، وقد واجهت خطأً غير مفهوم. أكتب مشروعًا بسيطًا باستخدام واجهات (interfaces)، وأريد استخدام تطبيق افتراضي للطريقة (default method implementation) مباشرة في الواجهة، كما في Java 8. الكود تقريبًا كالتالي: ```kotlin interface Clickable { fun onClick() // طريقة مجردة fun showToast() { // طريقة مع تطبيق افتراضي println("Clicked!") } } class Button : Clickable { override fun onClick() { showToast() // نستدعي الطريقة الافتراضية } } ``` في الاستوديو، كل شيء يُترجم (compiles)، لكن عندما أشغّله على محاكي (emulator) بنظام Android 6.0 (API 23)، يتعطل التطبيق مع الخطأ: "Default interface methods are only supported starting with Android 7.0 (Nougat)". أستخدم compileSdk 34 و minSdk 21. لماذا يحدث هذا؟ ففي النهاية Kotlin متوافق تمامًا مع Java 8؟ كيف يمكنني جعله يعمل على الإصدارات القديمة من Android؟ هل أحتاج إلى إضافة بعض الأعلام (flags) في Gradle؟ أم يجب التخلي عن الطرق الافتراضية في الواجهات؟ سأ