#android #kotlin
#Android #kotlin
Вопрос:
Я только что начал разработку Android с базовым приложением, которое принимает имя пользователя и отображается в Toast, но столкнулось с ошибкой в основном действии. В нем говорится «Неразрешенные ссылки: editName». Я попытался снова создать приложение, вручную импортировать виджет EditText и изменить имя идентификатора, но ничего не работает. Было бы здорово, если бы кто-нибудь мог сказать мне, что происходит не так. Скриншот кода с ошибкой, подчеркнутой красным .…. Сборка модуля …. Сборка проекта
Ответ №1:
Я покажу вам пример на Java.
Вы должны создать переменную в своем классе activity
EditText editName;
затем вы должны переопределить метод onCreate() Activity
класса:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
editName = (EditText) findViewById(R.id.editName);
}
переопределяя onCreate()
, вы можете взять ссылку на свой EditText.
Ответ №2:
Если вы следуете руководству, они, вероятно, ожидают, что вы будете использовать синтетическую привязку Kotlin, что означает, что вам это нужно в вашем build.gradle
:
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
Это автоматически создаст переменные для каждого View
в макете, которому присвоен идентификатор, поэтому, если у вас есть идентификатор EditText
с идентификатором editName
, тогда a val editName: EditText
будет создан в фоновом режиме при раздувании макета. Да, это волшебно, да, это сбивает всех с толку и объясняет множество проблем, с которыми люди сталкиваются здесь!
Ответ Саваторе — это обычный, стандартный, немагический способ сделать это. Если вам нужно удобство, загляните в View Binding
библиотеку, которая является официальным способом автоматической привязки представлений к переменным (синтетика Kotlin устарела)
Комментарии:
1. Я думаю, что эти плагины уже есть (изображения добавлены выше). Пожалуйста, предложите, что еще может пойти не так.
2. добавьте
import kotlinx.android.synthetic.main.activity_main.*
в свой импорт в действие. Но сначала попробуйте навести текстовый курсор на красныйeditText
, нажатьAlt Enter
и посмотреть, импортирует ли он его для вас (или предлагает) — вам очень редко приходится добавлятьimport
строки самостоятельно