〈kotlin〉Android studio使い方メモ4:Preference

金宏和實さんの「作ればわかる!Androidプログラミング kotlin対応」を参考に
Android studioでkotlinを使ってAndroidアプリ作成。

共有プリファレンスによるデータ保存について

共有プリファレンスとは

Android端末の内部の記憶媒体にKey-Value形式でデータを記憶する、データの保存方法。
記憶できるデータの形式やデータ量に制限がある。
主にアプリの設定値など少量のデータ保存に使う。

その他の保存方法は

  • ファイル:文章など長い文字や画像、音楽データ
  • データベース:大量の同じ形式のデータを保存し、検索して更新する
  • ビッグデータとしてクラウドに保存
PreferenceManagerは非推奨になった

共有プリファレンスにアクセスする方法として、
本書で使われているPreferenceManagerクラスはAPIレベル29から非推奨になっていた。
(PreferenceManagerをインポートすると取り消し線が引かれる)
代わりにAndroidX Preference Libraryの使う。

AndroidX Preference Libraryの設定

まずGradle Scriptsからbuild.gradle(Module)を開き、コードを追加する。

dependencies{
    implementation 'androidx.preference:preference-ktx:1.1.1'
}
//Sync Now

プログラムにimport文を追加する

import androidx.preference.PreferenceManager
共有プリファレンスの読み込み
val pref = PreferenceManager.getDefaultSharedPreferences(this)
val name = pref.getString("key", "")

これで使用中のプリファレンスにアクセスできる。
プリファレンスを指定するにはgetSharedPreferencesメソッドを使う。

val pref = getSharedPreferences("preference_name",  MODE_PRIVATE)
//第一引数:プリファレンスのファイル名 第二引数:モード指定


データを取得してくるにはgetメソッドにキーとデフォルト値を指定する。
指定したキーの値がなければ、設定したデフォルト値が返ってくる。
getメソッドはデータ型に合わせてそれぞれ、
getBoolean(), getFloat(), getInt(), getLong(), getString(), getStringSet()
を使う。

共有プリファレンスに保存
val pref = PreferenceManager.getDefaultSharedPreferences(this)
val editor = pref.edit()
editor.putString("key", "value")
editor.apply()

putメソッドでkeyと共に書き込む。
保存するためにはapplyメソッドを使用する。

2022.7 追記

移行が推奨されているPreference DataStore記事書きました
〈kotlin〉Preferences DataStore - ゆるプログラミング日記