Last active
January 31, 2020 11:09
-
-
Save Jeehut/93c1e340d0ecba424754c38d0da8f899 to your computer and use it in GitHub Desktop.
SharedPreferences wrapper in Kotlin: copy & paste the code into a new `AppPreferences.kt` file & follow the 4 TODO steps.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import android.content.Context | |
import android.content.Context.MODE_PRIVATE | |
import android.content.SharedPreferences | |
import androidx.core.content.edit | |
object AppPreferences { | |
private var sharedPreferences: SharedPreferences? = null | |
// TODO step 1: call `AppPreferences.setup(applicationContext)` in your MainActivity's `onCreate` method | |
fun setup(context: Context) { | |
// TODO step 2: set your app name here | |
sharedPreferences = context.getSharedPreferences("<YOUR_APP_NAME>.sharedprefs", MODE_PRIVATE) | |
} | |
// TODO step 4: replace these example attributes with your stored values | |
var heightInCentimeters: Int? | |
get() = Key.HEIGHT.getInt() | |
set(value) = Key.HEIGHT.setInt(value) | |
var birthdayInMilliseconds: Long? | |
get() = Key.BIRTHDAY.getLong() | |
set(value) = Key.BIRTHDAY.setLong(value) | |
private enum class Key { | |
HEIGHT, BIRTHDAY; // TODO step 3: replace these cases with your stored values keys | |
fun getBoolean(): Boolean? = if (sharedPreferences!!.contains(name)) sharedPreferences!!.getBoolean(name, false) else null | |
fun getFloat(): Float? = if (sharedPreferences!!.contains(name)) sharedPreferences!!.getFloat(name, 0f) else null | |
fun getInt(): Int? = if (sharedPreferences!!.contains(name)) sharedPreferences!!.getInt(name, 0) else null | |
fun getLong(): Long? = if (sharedPreferences!!.contains(name)) sharedPreferences!!.getLong(name, 0) else null | |
fun getString(): String? = if (sharedPreferences!!.contains(name)) sharedPreferences!!.getString(name, "") else null | |
fun setBoolean(value: Boolean?) = value?.let { sharedPreferences!!.edit { putBoolean(name, value) } } ?: remove() | |
fun setFloat(value: Float?) = value?.let { sharedPreferences!!.edit { putFloat(name, value) } } ?: remove() | |
fun setInt(value: Int?) = value?.let { sharedPreferences!!.edit { putInt(name, value) } } ?: remove() | |
fun setLong(value: Long?) = value?.let { sharedPreferences!!.edit { putLong(name, value) } } ?: remove() | |
fun setString(value: String?) = value?.let { sharedPreferences!!.edit { putString(name, value) } } ?: remove() | |
fun exists(): Boolean = sharedPreferences!!.contains(name) | |
fun remove() = sharedPreferences!!.edit { remove(name) } | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment