Я сделал очень простое приложение для игры в кости (в Kotlin), используя Android Studio с imageView и кнопкой. Идентификатор imageView — «imageView», а идентификатор кнопки — «button». Но в файле MainActivity.kt имена идентификаторов окрашены в красный цвет, и когда я навожу на них указатель мыши, появляется сообщение «неразрешенная ссылка: imageView (или кнопка)». Почему это происходит и как мне решить эту проблему?
Имена идентификаторов одинаковы как в файле activity_main.xml, так и в файле MainActivity.kt:
Можете ли вы предоставить мне раздел импорта, а также ваш build.gradle приложения.
Вы используете плагин расширений Kotlin для Android?
Какую версию котлина вы используете?
Я настоятельно рекомендую использовать ViewBind вместо расширений Kotlin. Он устарел в версии kotlin 1.4.20.
Вы должны использовать расширение kotlin.
В вашем app gradle.build
добавьте плагин: 'kotlin-android-extensions'
В вашем классе добавьте импорт для импорта kotlinx.android.synthetic.main.<layout>.*
где имя файла вашего макета.
kotlin синтетические устарели
Ваша деятельность должна знать, к чему относятся эти имена, платформа не связывает автоматически представления завышенные из файла макета XML. Исторически это делается в Android, вызывая метод findViewById()
следующим образом:
lateinit var myTextView
override fun onCreate(savedInstanceBundle: Bundle?) {
super.onCreate(savedInstanceBundle)
// The layout file is "inflated" automatically here
setContentView(R.layout.layout_name)
// Then we can assign a reference to views by ID:
myTextView = findViewById<TextView>(R.id.text_view_name)
}
С тех пор появились ярлыки: Butterknife , Kotlin Synthetics или текущий принятый стандарт, Jetpack View Binding. если вам просто нужно быстро получить несколько просмотров, позвоните findViewByid()
, но, поскольку вы работаете с Android, стоит потратить время, чтобы включить View Binding, чтобы сократить этот шаблонный код.
просто перезапустите, используя недействительные кеши / перезапустите, как вы видите это изображение, и после этого очистите, а затем перестройте свой проект
неправильно, это не решит проблему, это не ошибка IDE, представления не могут быть найдены
просто используйте viewBinding, это решит эту проблему
вы импортировали макет?