Как сделать сохранение данных SharedPreferences в Kotlin?

Я хочу сделать сохранение значения из EditText по нажатию на одну кнопку и выводить его в TextView по нажатию на другую. Вот мой код:

  • Разметка
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:gravity="center|top"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <EditText
        android:id="@+id/ed1"
        android:layout_width="match_parent"
        android:layout_height="50dp" />

    <Button
        android:text="Save"
        android:id="@+id/btn1"
        android:layout_width="match_parent"
        android:layout_height="50dp"/>

    <Button
        android:text="Load"
        android:id="@+id/btn2"
        android:layout_width="match_parent"
        android:layout_height="50dp"/>

    <TextView
        android:id="@+id/tv1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</LinearLayout>
  • Класс активности
class MainActivity : AppCompatActivity() {

    val PREFS_FILENAME = "file"
    val SETT = "settings"
    var prefs: SharedPreferences? = null
    var TEXT1 = ""

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        prefs = this.getSharedPreferences(PREFS_FILENAME, 0)
        TEXT1 = ed1.text.toString()

        btn1.setOnClickListener {
            val editor = prefs!!.edit()
            editor.putString(SETT, TEXT1)
            editor.apply()

            if (prefs!!.contains(PREFS_FILENAME)) {
                Toast.makeText(applicationContext, "Saved!", Toast.LENGTH_SHORT).show()
            }
        }

        btn2.setOnClickListener {
            TEXT1 = prefs!!.getString(SETT, "").toString()
            tv1.text = TEXT1

            if (prefs!!.contains(PREFS_FILENAME)) {
                Toast.makeText(applicationContext, "Loaded!", Toast.LENGTH_SHORT).show()
            }
        }
    }
}

Мой проблема в том, что по нажатию на кнопки выводится сообщение (на сколько я понимаю, сохранение происходит успешно), но в TextView сообщение не выводится. Что у меня не так?


Ответы (0 шт):