Android Studio: идентификатор простого текста не работает

#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)