Closed11

SharedPrefference を使ってみる

tkttkt

ちょっとしたデータを保存するだけなので、 room は使わなくても良い判断

tkttkt
val data: SharedPreferences = getSharedPreferences("Data", MODE_PRIVATE)

これ書いてみたけど、 getSharedPreferences ないって怒られる

tkttkt
PreferenceManager.getDefaultSharedPreferences(context)

これ書いたらとりあえず呼び出せた

'getDefaultSharedPreferences(Context!): SharedPreferences!' is deprecated. Deprecated in Java

でも deprecated らしい

tkttkt
Params:
name – Desired preferences file.
mode – Operating mode.

Returns:
The single SharedPreferences instance that can be used to retrieve and modify the preference values.

See Also:
MODE_PRIVATE

name は書き込み先で、mode は書き込みモード指定
なので、書き込み対象の key だったりの話ではなさそう

tkttkt

https://qiita.com/kph7mgb/items/bdaab20ca708df571b46

APIレベル29で廃止されたからあんまり使わないでねってことらしいです。
そのうち使えなくなるよーとのこと。
まあ、当分は使えるみたいですけど。
AndroidX Preference Library を使えとのことです。
以下、AndroidX Preference Libraryの使いかた。

tkttkt


設定画面を作ることが前提なんだろうか

tkttkt
import android.content.Context
import android.content.Context.MODE_PRIVATE


class SampleIdRepository(context: Context) {
    private val preferences = context.getSharedPreferences(
        VersionEnum.V1.toString(), MODE_PRIVATE)
    private val keyString = PreferencesKey.SAMPLE_ID_STRING.toString()

    fun get() : String? {
        return preferences.getString(keyString, null)
    }
    fun set(value: String) {
        preferences.edit().putString(
            keyString, value
        ).apply()
    }
    fun remove() {
        preferences.edit().remove(keyString).apply()
    }
}

enum class PreferencesKey {
    SAMPLE_ID_STRING
}
enum class VersionEnum {
    V1
}
このスクラップは2021/04/10にクローズされました