Неразрешенная ссылка при записи btnDatePicker в Android studio

android #kotlin

#Android #kotlin

Вопрос:

Я следую курсу, и когда я пишу btnDatePicker, я получаю неразрешенную ошибку:

 package com.example.ageinminutes

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)



        btnDatePicker
    }
}
 

Я искал в Интернете и добавил плагин в build.graddle (:app), как видно на разных решениях:

 plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'kotlin-android-extensions'
}
 

но это все равно не работает.

Любая помощь будет оценена.

Ответ №1:

Ответ by @himel правильный. Использование синтетики kotlin не рекомендуется.

Однако я заметил, что строки импорта для синтетического представления не было в вашем коде. Я предлагаю ввести представление вручную и импортировать с помощью Android studio, если вы хотите быстро исправить

Комментарии:

1. Где я могу найти код? Ценю

2. Я обновил приведенный выше код с помощью импорта, который я нашел для решения. В любом случае он по-прежнему отображается btnDatePicker как Unresolved reference

3. Извините, возможно, мой первоначальный ответ был немного запутанным. Я не имел в виду, что вы вводите импорт. В Android Studio, когда плагин synthetics настроен правильно, ввод идентификатора представления и нажатие Alt Enter или Opt Enter на Mac автоматически добавит импорт для вас.

4. Также убедитесь, что ваш xml имеет представление с соответствующим идентификатором… Посмотрите это, если вы в замешательстве youtube.com/watch?v=OrrOz6D5PEw

5. Пробовали оба решения. синхронизируйте build.gradle с новым кодом. Также попробовал вариант привязки, следуя различным руководствам, но все равно получаю btnDatePicker как неразрешенную ссылку. Даже перезапуск Android Studio. Ни один из вариантов не работает.

Ответ №2:

kotlin-android-extension устарел, вместо этого следует использовать привязку к просмотру.

Следуйте этому: https://developer.android.com/topic/libraries/view-binding/migration#:~:text=Kotlin Android Extensions is deprecated,migrate to Jetpack view binding.

Комментарии:

1. Да, тоже пробовали. Но для курса я должен использовать старый способ. Устаревание не означает, что оно не работает. Итак, это должно быть правильно?