どうも!LSSです!
今回は、
- SQLiteとかを使うよりもよっぽど簡単に、
- アプリのデータを保存できて、
- アプリ終了後も再度立ち上げると、覚えていてくれる、
そんなSharedPreferencesについて、自分なりにまとめてみたいと思います。
- ぶっちゃけ、覚える必要があるのは6つの文だけ!
- lateinit var prf:SharedPreferences
- prf=getSharedPreferences("DATAPREF", Context.MODE_PRIVATE)
- intdata1=prf.getInt("intkey1",0)
- val prfe=prf.edit()prfe.putInt("intkei1",intdata1)prfe.apply()
ぶっちゃけ、覚える必要があるのは6つの文だけ!
6つの文、内訳は、宣言2つ、読み込み1つ、書き込み3つ、です。
宣言も1回でやってしまえるんですが、lateinitで名前だけ宣言、onCreate内で内容を宣言、としたほうが使い勝手が良さそうで。
lateinit var prf:SharedPreferences
宣言その1、書くのはMainActivityとかのしょっぱな(onCreateなどに属さない部分)
…prfは任意の名前、で、prfをプリファレンスオブジェクトとして使いますよ、
という宣言です。
「prf」と「SharedPreferences」の間が=(イコール)ではなく:(コロン)なのが要注意ですね。
prf=getSharedPreferences("DATAPREF", Context.MODE_PRIVATE)
宣言その2、書くのはonCreate()など最初に実行される部分。
ここで”DATAPREF”もまた任意の名前です。
prfは先にlateinitで宣言済みなので、ここでvalとかvarとかつけてしまうと動作しないのも要注意かと。(実際やっちゃいました^^;)
intdata1=prf.getInt("intkey1",0)
読み込む時はこう。
intdata1…任意の名前、この場合Int型の変数。
"intkey1"…任意の名前、SharedPreferences内のDATAPREFというデータセットに保存した「キー、値」のペアの内、キーに当たる部分。
0…任意のInt値。キー"intkey1"が存在しなかった場合に、代わりに取り出される値。
で、上記1文を実行すると、"intkey1"をキーとして保存された値が、intdata1というInt型変数に代入されます。まだ保存されていないとかで取り出せない時は、後ろに書いた値(この場合0)が、しれっとintdata1に代入されます。
val prfe=prf.edit()
prfe.putInt("intkei1",intdata1)
prfe.apply()
書き込む時はこう。3行、書いていますが、1行目は書き込みのためのeditオブジェクトの宣言、3行目は設定した書き込みの実行で、2行目が書き込み内容そのものになります。
prfe…任意の名前、prfを書き込み用として扱うオブジェクト。
"intkey1"…読み込みの時と同様に任意の名前の、保存するキー。
intdata1…任意の名前の変数。ここはキーに対応する値を与える部分。
保存するデータが複数種ある時は、2行目だけが増えて、1行目と3行目はその最初と最後にだけ書けばOK、な感じです。
だいぶ駆け足な感じで書いてしまいました。
後日、実践編って感じで、しれっと使ってみたいと思いますw
ではまた!次回もよろしくです!!