Способ сохранения архива в общих настройках kotlin - PullRequest
0 голосов
/ 19 октября 2019

Я полностью новичок в Kotlin, и я хочу создать приложение, в котором, нажав кнопку, мы получим новый текст, отображаемый в текстовом представлении. Проблема в том, что там должно быть 365 предложений, и я не уверен, является ли arraylist лучшим способом сделать это.

Мне удалось сохранить текст в sharedpreferences, но каждый раз, когда я открываюприложение снова, правильный текст отображается, но после нажатия кнопки он снова начинается с начала

 fun loadData() {
    val sharedPreferences = getSharedPreferences("SP_INFO", Context.MODE_PRIVATE)

    val someText = sharedPreferences.getString("SOME_TEXT", "")

    selectedSomeText.text = "$someText"
}

fun saveData() {
    val sharedPreferences = getSharedPreferences("SP_INFO", Context.MODE_PRIVATE)
    val someText = selectedSomeText.text.toString().trim()

    val editor = sharedPreferences.edit()

    editor.putString("SOME_TEXT", someText)

    editor.apply()
}

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

1 Ответ

1 голос
/ 19 октября 2019

Если вам нужно отслеживать позицию в массиве, возможно, имеет смысл сохранить позицию (Int) только в ваших общих настройках и установить текущий индекс в массиве на это целое число при загрузке приложения. очередной раз.

Нечто подобное может работать (Примечание: я не уверен, что именно так выглядит ваша установка, поэтому я угадываю структуру здесь)


val stringsArray: Array<String> = arrayOf(...)
var currentPosition = 0

fun loadData() {
    val sharedPreferences = getSharedPreferences("SP_INFO", Context.MODE_PRIVATE)

    val lastPosition = sharedPreferences.getInt("STRING_ARRAY_POSITION", 0)

    currentPosition = lastPosition
    selectedSomeText.text = stringsArray[lastPosition]
}

fun saveData() {
    val sharedPreferences = getSharedPreferences("SP_INFO", Context.MODE_PRIVATE)

    val editor = sharedPreferences.edit()

    editor.putInt("STRING_ARRAY_POSITION", currentPosition)

    editor.apply()
}
...