Я использую общие настройки для хранения провинции пользователя. Он уже сохранен в XML-файле, но всегда возвращает значение по умолчанию.
Как я могу вернуть значение SharedPreferences?
введите описание изображения здесьвведите описание изображения здесь
Kotlin
governorate_main.setOnClickListener {
val view = layoutInflater.inflate(R.layout.add_photo, null)
val alertBuilder = AlertDialog.Builder(this)
alertBuilder.setView(view)
val alertDialog = alertBuilder.create()
alertDialog.show()
view.save_governorate.setOnClickListener {
mShared = getSharedPreferences("mShared", 0)
val radioId = view.radioGroup.checkedRadioButtonId
radioButton = view?.findViewById(radioId)
radioSelected = radioButton?.text.toString()
val editor:SharedPreferences.Editor = mShared!!.edit()
editor.putString("governorate", radioSelected).toString()
editor.apply()
alertDialog.dismiss()
}
val databack: SharedPreferences = getSharedPreferences("mShared", 0)
governorate.text = databack.getString("governorte", "Please choose your country")
}
Вы допустили орфографическую ошибку, сохраняете как governorate
, но пытаетесь получить governorte
Также, вероятно, не стоит встраивать слушателей кликов.
@mola вам придется изменить код, потому что на данный момент он не работает. Я бы предложил переместить view.save_governorate.setOnClickListener {...
за пределы governorate_main.setOnClickListener {...
, и уверены ли вы, что представление governorate
на самом деле не нулевое?
Первопричина: Вы используете 2 разностных ключа для хранения и извлечения значения из SharedPreferences, governorate
отличается от governorte
.
Решение: Вы должны определить ключ как static constant
, а затем использовать его при сохранении и извлечении значения.
companion object {
val PREF_GOVERNORATE: String = "governorate"
}
Хранить:
editor.putString(PREF_GOVERNORATE, radioSelected).toString()
Забрать:
databack.getString(PREF_GOVERNORATE, "Please choose your country")
ты прав. Я сделал это, но у меня все еще есть проблема "java.lang.NullPointerException"
ошибка находится в этой строке Governorate.text = databack.getString ("Governorte", "Пожалуйста, выберите свою страну")
java.lang.NullPointerException
Мне нужен полный logcat, вы можете отредактировать вопрос и добавить ошибку logcat.
Убедитесь, что governorate
был инициализирован, прежде чем вводить на него текст.
Я так и сделал, строка 61 Governorate.text = databack.getString ("Governorte", "Пожалуйста, выберите свою страну")
ты прав. Я сделал это, но у меня все еще есть проблема "java.lang.NullPointerException"