Имена идентификаторов красные в Android Studio (Kotlin)

Я сделал очень простое приложение для игры в кости (в Kotlin), используя Android Studio с imageView и кнопкой. Идентификатор imageView — «imageView», а идентификатор кнопки — «button». Но в файле MainActivity.kt имена идентификаторов окрашены в красный цвет, и когда я навожу на них указатель мыши, появляется сообщение «неразрешенная ссылка: imageView (или кнопка)». Почему это происходит и как мне решить эту проблему?

Имена идентификаторов одинаковы как в файле activity_main.xml, так и в файле MainActivity.kt:

вы импортировали макет?

Rajshekhar 14.12.2020 05:49

Можете ли вы предоставить мне раздел импорта, а также ваш build.gradle приложения.

Rajshekhar 14.12.2020 05:49

Вы используете плагин расширений Kotlin для Android?

Alpha 1 14.12.2020 05:49

Какую версию котлина вы используете?

Mustafo aka Shokhrukh Makmudov 14.12.2020 06:07

Я настоятельно рекомендую использовать ViewBind вместо расширений Kotlin. Он устарел в версии kotlin 1.4.20.

Mustafo aka Shokhrukh Makmudov 14.12.2020 06:08
0
5
1 037
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы должны использовать расширение kotlin. В вашем app gradle.build добавьте плагин: 'kotlin-android-extensions' В вашем классе добавьте импорт для импорта kotlinx.android.synthetic.main.<layout>.* где имя файла вашего макета.

kotlin синтетические устарели

a_local_nobody 14.12.2020 07:05
Ответ принят как подходящий

Ваша деятельность должна знать, к чему относятся эти имена, платформа не связывает автоматически представления завышенные из файла макета 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, представления не могут быть найдены

a_local_nobody 14.12.2020 07:05

просто используйте viewBinding, это решит эту проблему

Nitin Prakash 15.12.2020 05:41

Другие вопросы по теме