Как сохранить текст кнопки (SharedPreferences) - PullRequest
0 голосов
/ 11 марта 2020

Хорошего дня.

Я уже некоторое время пользуюсь Android Studio, и я создал простой код для изменения текста кнопки при нажатии на нее. Вот код:

MainActivity.kt

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
val language = findViewById<Button>(R.id.language)
language.setOnClickListener {
        if ("EN" == language.text) {
            language.text = "IT"
            rollButton.text = "Roll the dice"
            textView.text = "choose the number of dice:"
            if ("Lancia il dado" == Biscotto.text) {
                Biscotto.text = "Roll the dice"
            }
        } else if ("IT" == language.text) {
            language.text = "EN"
            rollButton.text = "Lancia il dado"
            textView.text = "imposta il numero di dadi:"
            if ("Roll the dice" == Biscotto.text) {
                Biscotto.text = "Lancia il dado"
            }
        }
    }

Activity_main. xml

<Button
    android:id="@+id/language"
    android:layout_width="74dp"
    android:layout_height="48dp"
    android:layout_marginEnd="16dp"
    android:layout_marginRight="16dp"
    android:layout_marginBottom="12dp"
    android:drawableLeft="@drawable/ic_language_black_24dp"
    android:text="EN"
    app:layout_constraintBottom_toTopOf="@+id/divider"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="1.0" />

Как сделать Я сохраняю текст кнопки, чтобы при перезапуске приложения оно отображалось как «IT» или «EN» в зависимости от последнего значения, которое оно приняло ранее?

Ответы [ 2 ]

0 голосов
/ 11 марта 2020

Не проверено, но это может работать:

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val languageBtn = findViewById<Button>(R.id.language)

        val sharedPref = getSharedPreferences("LANGUAGE", Context.MODE_PRIVATE)
        val editor = sharedPref.edit()
        val currentLocale = sharedPref.getString("LANGUAGE", "EN")

        languageBtn.text = currentLocale

        language.setOnClickListener {
            if (languageBtn.text.contains("EN")) {
                languageBtn.text = "IT"
                editor.putString("LANGUAGE", "IT").commit()
                rollButton.text = "Roll the dice"
                textView.text = "choose the number of dice:"
                if ("Lancia il dado" == Biscotto.text) {
                    Biscotto.text = "Roll the dice"
                }
            } else if (languageBtn.text.contains("IT")) {
                languageBtn.text = "EN"
                editor.putString("LANGUAGE", "EN").commit()
                rollButton.text = "Lancia il dado"
                textView.text = "imposta il numero di dadi:"
                if ("Roll the dice" == Biscotto.text) {
                    Biscotto.text = "Lancia il dado"
                }
            } // else { ... }
        }
    }

Объявите ваши общие настройки вне события нажатия кнопки. И отсюда получите строку, сохраненную в настройках («EN» или «IT»): это значение затем устанавливается в тексте кнопки.

После этого, внутри события click, вы можете сравнить значение отображается на кнопке с той, которая хранится в общих настройках, и установите ее соответствующим образом.

Кстати, не забудьте поместить все свои строки в файл выделенных значений :) Дайте мне знать, если у вас есть некоторые беда.

0 голосов
/ 11 марта 2020

Хорошего дня, надеюсь, это сработает

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val language = findViewById<Button>(R.id.language)
        language.setOnClickListener {
            val sharedPref = getSharedPreferences("LANGUAGE", Context.MODE_PRIVATE)
            val lang = sharedPref.getString("LANGUAGE", "EN")
            if ("EN" == lang) {
                val editor = sharedPref.edit()
                editor.putString("LANGUAGE", "IT")
                editor.commit()
                language.text = "IT"
                rollButton.text = "Roll the dice"
                textView.text = "choose the number of dice:"
                if ("Lancia il dado" == Biscotto.text) {
                    Biscotto.text = "Roll the dice"
                }
            } else if ("IT" == lang) {
                val editor = sharedPref.edit()
                editor.putString("LANGUAGE", "EN")
                editor.commit()
                language.text = "EN"
                rollButton.text = "Lancia il dado"
                textView.text = "imposta il numero di dadi:"
                if ("Roll the dice" == Biscotto.text) {
                    Biscotto.text = "Lancia il dado"
                }
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...