Как сохранить настройки в Android, если у меня есть следующие коды? - PullRequest
0 голосов
/ 09 июня 2019

Я новичок в Android и мне сложно понять некоторые понятия.

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

<ScrollView
    <LinearLayout
        android:orientation="vertical" >
        <LinearLayout"
            android:orientation="horizontal"
            android:clickable="true" >
            <TextView
               <!-- this is Item --> 
               android:text="@string/settings_enabled_days"/>
               <!-- android:text="Enabled Days" -->
            <TextView
               <!-- this is sub Item --> 
               android:text="@string/settings_enabled_days_value" />
               <!-- android:text="Mon, Tue, Wed, Fri, Sat" -->
        </LinearLayout>

Теперь у меня есть следующий код активности настроек, я поставил свои сомнения в комментариях:

class SettingsActivity : AppCompatActivity() {

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

        val enabledDays = findViewById<LinearLayout>(R.id.settings_enabled_days)
        enabledDays.setOnClickListener { showEnabledDaysDialog() }

    }

    private fun showEnabledDaysDialog() {
        // I have declared arrayChecked to make the app working
        // But I want it to be stored somewhere so that I can modify its default values later
        val arrayChecked = booleanArrayOf(false, true, true, true, true, true, false)
        val selectedDays = ArrayList<Int>()

        val enabledDaysBuilder = AlertDialog.Builder(this)
        enabledDaysBuilder.setTitle(R.string.settings_enabled_days)
        enabledDaysBuilder.setMultiChoiceItems(R.array.days_long, arrayChecked) { _, which, isChecked ->
            if (isChecked)
                selectedDays.add(which)
            else if (selectedDays.contains(which))
                selectedDays.remove(Integer.valueOf(which))
        }
        enabledDaysBuilder.setPositiveButton(R.string.dialog_ok) { dialog, which -> 
            // I don't know what to do here
            // I want selectedDays to modify the default values
            // I also don't know where to store those default values 
        }
        enabledDaysBuilder.setNegativeButton(R.string.dialog_cancel) { _, _ ->
            // do not modify anything
        }

        val enabledDaysDialog = enabledDaysBuilder.create()
        enabledDaysDialog.show()
    }
}

Это массив days_long в array.xml file

<string-array name="days_long">
    <item>Sunday</item>
    <item>Monday</item>
    <item>Tuesday</item>
    <item>Wednesday</item>
    <item>Thursday</item>
    <item>Friday</item>
    <item>Saturday</item>
</string-array>

1 Ответ

0 голосов
/ 09 июня 2019

Вы должны заглянуть в SharedPreferences.Вы можете сохранять логические состояния, которые сохраняются при закрытии и повторном открытии приложения.Затем вы можете прочитать из SharedPreferences, чтобы восстановить ваши «Настройки».

https://developer.android.com/training/data-storage/shared-preferences

...