2017/09/22

[Kotlin de Android] 第8回 SharedPreferencesを使ってデータを保存してみよう

スポンサーリンク

さて、今回はデータの永続化について見ていきたいと思います。
一番簡単な方法はSharedPreferencesを使う方法なので、まずはこちらから。

簡単に使えますが、キーと値のペアを保存するだけなので、アプリの設定値などごく小さい単位のデータの保存に使います。
大きなデータには向かないのでご注意を。

今回はSharedPreferencesの使い方だけ見ていきたいと思うので、AndroidStudioのプロジェクトは作らずに、コードの紹介だけしたいと思います。
いろいろなサイトで紹介されていますが、Kotlinでの書き方を紹介します。

もくじ

1. SharedPreferencesを生成してみよう
2. データを読み込んでみよう
3. データを書き込んでみよう
4. 複数のSharedPreferencesを使ってみよう

1. SharedPreferencesを生成してみよう

まずはSharedPreferenceのインスタンスを生成する必要があります。と言っても簡単でActivityにgetPreferencesというメソッドが用意されているのでそれを使います。

引数はアクセス権限の指定で、いろいろモードはあるのですが、現在推奨されているのはMODE_PRIVATEのみなようです。このアプリ内のみで使う、といった指定ですね。

上記の例はActivityから使う場合の書き方です。
もし、Fragmentなどから使う場合にはContextの取得が必要なので、以下のように書いてください。

以降はActivity内で実行することを前提として話を進めます。

2. データを読み込んでみよう

SharedPreferenceからデータを読み込むにはgetInt()getString()といった具合に、取得したいデータのデータ型に応じたメソッドを使う必要があります。

例えば、「count」というキー値に対応しているデータを取得したい場合には以下のように書いてあげます。

1つ目の引数がキー値ですね。2つ目の引数はキーが存在しない場合のデフォルト値になります。

なので上の例だと、countというキーのデータがSharedPreferenceにあればそれを取得、もしキーがなければ0が取得できるというわけです。

3. データを書き込んでみよう

データの書き込みはちょっと面倒だったりします。
SharedPreferenceのインスタンスから、SharedPreferences.Editorというのを生成して上げる必要があります。
それから、putInt()putString() といったメソッドを使用してキーと値をセットしたあとに、commit()メソッドを使って保存する、といった流れになります。

上記の例は、SharedPreferencesからcountのデータを取得して、countを更新後、再びSharedPreferencesに書き込む、といったものです。

最後のcommit()は忘れがちなのでご注意を…。(私はそれでしばらく悩みましたw)

書き込むのが1つだけでshardPrefEditorとかいちいち変数を用意するのが面倒な場合は、下記のようにまとめて書いちゃうことも可能です。

4. 複数のSharedPreferencesを使ってみよう

保存する値が少ない場合などは今までのやり方で問題ないのですが、例えば画面毎に分けたいなどといった場合は、複数個生成することが可能です。

SharedPreferencesのインスタンスを作るときに、getSharedPreferences()というメソッドを使ってあげればOKです。

1つ目の引数は識別子になります。ここを変更することで複数のSharedPreferencesを持つことができるようになります。
識別子は「com.example.myapp.PREFERENCE_FILE_KEY」といったようにアプリを一意に識別できるような名前にすることが推奨されています。

2つ目の引数はgetPreferences()のときと同じようにアクセス権限を指定します。こちらもMODE_PRIVATEを使うようにしましょう。

読み書きは今までと同様です。
シンプルなサンプルですが、次のように使えばOKです。ここでは同じActivityで2つのSharedPreferencesを使うようになっています。

SharedPreferencesの識別子が違うものになっていれば、キー値は同じものが使えます。
このソースが実行されるたびに、count1は1ずつ、count2は2ずつカウントアップされていきます。
本来、アプリの設定値などを保存するためのものなので、このサンプルの使い方はそれとは違うものになっているので、動作の参考にとどめてくださいね。

簡単でしたが、SharedPreferencesのKotlinでの使い方の紹介でした。

スポンサーリンク