こんにちは。m_saekiです。
kotlinを初めて4日目です。
Javaで実装していた時のSharedPreferenceUtil Classをkotlinに変換して今後コピペでいいように投稿しておきます。
こう修正した方がいいよは是非受け付けますのでよろしくお願いします。
BaseSharedPreference Class
BaseとなるClassになります。
SharedPreferencesをシングルトンインスタンスで呼び出し、
それぞれの型で保存するか、読み込みかのみを実装しております。
BaseSharedPreference.kt
open class BaseSharedPreference {
companion object {
private val PREFERENCE_FILE_NAME = "app-name-pref"
fun instance(context: Context): SharedPreferences {
return context.getSharedPreferences(PREFERENCE_FILE_NAME, Context.MODE_PRIVATE)
}
fun putString(context: Context, key: String, value: String) {
val ed = instance(context).edit()
ed.putString(key, value)
ed.apply()
}
fun getString(context: Context, key: String, defValue: String): String {
return instance(context).getString(key, defValue)
}
fun putInteger(context: Context, key: String, value: Int) {
val ed = instance(context).edit()
ed.putInt(key, value)
ed.apply()
}
fun getInteger(context: Context, key: String, defValue: Int): Int {
return instance(context).getInt(key, defValue)
}
fun putBoolean(context: Context, key: String, value: Boolean) {
val ed = instance(context).edit()
ed.putBoolean(key, value)
ed.apply()
}
fun getBoolean(context: Context, key: String, defValue: Boolean): Boolean {
return instance(context).getBoolean(key, defValue)
}
fun remove(context: Context, key: String) {
val ed = instance(context).edit()
ed.remove(key)
ed.apply()
}
}
}
enum Key Class
ここではenumでSharedPreferenceに必要なキーを実装しています。
例でUSER_TOKENとありますが、必要なキーを追加していきます。
Key.kt
enum class Key {
USER_TOKEN,
}
SharedPreferenceUtil Class
saveUserToken,loadUserTokenで保存、取得の処理をしています。
SharedPreferenceUtil.kt
class SharedPreferenceUtil: BaseSharedPreference() {
companion object {
fun saveUserToken(context: Context, token: String) {
putString(context, Key. USER_TOKEN.name, token)
}
fun loadUserToken(context: Context) {
getString(context, Key. USER_TOKEN.name, "")
}
}
}
SharedPreferenceUtilの使い方
// 保存方法
SharedPreferenceUtil. saveUserToken(context, "User Token")
// 取得方法
SharedPreferenceUtil.loadUserToken(context)
以上となります。
初めて触る言語は楽しいですね。
Twitterのフォローよかったらよろしくお願いします!