LoginSignup
2
0

More than 5 years have passed since last update.

KotlinでSharedPreference Classを実装

Last updated at Posted at 2018-02-12

こんにちは。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のフォローよかったらよろしくお願いします!

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0