Как вернуть значение общих предпочтений?

Я использую общие настройки для хранения провинции пользователя. Он уже сохранен в 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")
 }
3
0
58
2

Ответы 2

Вы допустили орфографическую ошибку, сохраняете как governorate, но пытаетесь получить governorte

Также, вероятно, не стоит встраивать слушателей кликов.

ты прав. Я сделал это, но у меня все еще есть проблема "java.lang.NullPointerException"

mola 06.09.2018 05:00

@mola вам придется изменить код, потому что на данный момент он не работает. Я бы предложил переместить view.save_governorate.setOnClickListener {... за пределы governorate_main.setOnClickListener {..., и уверены ли вы, что представление governorate на самом деле не нулевое?

David Liaw 06.09.2018 06:37

Первопричина: Вы используете 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"

mola 06.09.2018 04:57

ошибка находится в этой строке Governorate.text = databack.getString ("Governorte", "Пожалуйста, выберите свою страну")

mola 06.09.2018 05:07

java.lang.NullPointerException

mola 06.09.2018 05:08

Мне нужен полный logcat, вы можете отредактировать вопрос и добавить ошибку logcat.

Son Truong 06.09.2018 05:08

Убедитесь, что governorate был инициализирован, прежде чем вводить на него текст.

Son Truong 06.09.2018 05:09

Я так и сделал, строка 61 Governorate.text = databack.getString ("Governorte", "Пожалуйста, выберите свою страну")

mola 06.09.2018 05:38

Другие вопросы по теме