#java #android #android-studio #kotlin
#java #Android #android-studio #kotlin
Вопрос:
Я настоящий новичок, так что это, вероятно, настоящая ошибка новичка!
но… У меня проблема. Я работаю над приложением инвентаризации и ввожу обычный текст с идентификатором: editTextItemName
Но когда я использую его в своем коде:
class AddItemActivity: AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.add_item)
val database = getSharedPreferences("database", Context.MODE_PRIVATE)
database.edit().apply {
putString("savedItemName", editTextItemName)
}.apply()
}
}
«editTextItemName становится красным, и на нем написано «Неразрешенная ссылка: editTextItemName»
Как мне это исправить?
Мой ответ на ответ: я вставил это в свой код, и теперь у меня новая ошибка: e: C:UsersUserAndroidStudioProjectsStorageManagementTheThirdappsrcmainjavacomexamplestoragemanagementthethirdAddItemActivity.kt : (20, 40): Несоответствие типов: предполагаемый тип — это EditText, но строка? ожидалось
Комментарии:
1. Какая часть кода выдает эту ошибку, пожалуйста, обновите свой вопрос
Ответ №1:
e: C:UsersUserAndroidStudioProjectsStorageManagementTheThirdappsrcmainjavacomexamplestoragemanagementthethirdAddItemActivity.kt : (20, 40): Несоответствие типов: предполагаемый тип — это EditText, но строка? ожидалось
Основная причина
SharedPreferences.Editor.putString(строка, строка) получает два String
параметра, но в вашем коде, который вы передаете editTextItemName
, является экземпляром EditText
в качестве второго параметра, поэтому компилятор выдает ошибку.
Решение
Измените свой код на
val database = getSharedPreferences("database", Context.MODE_PRIVATE)
database.edit().apply {
putString("savedItemName", editTextItemName.text.toString())
}.apply()
Ответ №2:
Как вы пытаетесь получить доступ к вашему представлению editTextItemName? В вашем коде это непонятно. Например, используете ли вы kotlin synthetic? Если нет, вы должны добавить это в свой код, чтобы получить доступ к вашему представлению:
val editTextItemName: EditText = findViewById(R.id.editTextItemName)