ポイント
- SharedPreferences を使用すれば引数に指定した値を XML ファイルに保存して永続的に使用できる。
- SharedPreferences で使用するための XML ファイルを作る必要はない。
- アクティビティを超えて SharedPreferences を使用したい時は、getSharedPreferences メソッドを使用する。getPreferences ではダメで、保存した値を別のアクティビティで取り出せないため試用できなかった。
- 永続化されて保存されるため、メモリからアプリを消しても、設定値は保存される。
参考ページ
具体例
たとえば onCreate 内で使う例を取り挙げます。冒頭で次のように書いて保存したデータを読み出します。
// 保存データの読み出し sharedPreferences = getSharedPreferences("preferences", Context.MODE_PRIVATE); String url = sharedPreferences.getString("url", ""); String checker = sharedPreferences.getString("checker", ""); Log.d(TAG, "url: " + url + ". checker: " + checker);
URL について見ていきますの。SharedPreferences から “url” と指定して、変数 url に文字列をセットしております。それを EditText にセットして、変更できるにしていきますわね。
// URL を EditText に設定 final EditText sendUrlEditText = (EditText) findViewById(R.id.sendUrlEditText); sendUrlEditText.setText(url);
これで SharedPreferences に保存した値を画面に表示し、変更できるようになりました。
続いて、EditText から抜けた時に SharedPreferences へ保存いたします。SharedPreferences.Editor インスタンスに、 “url” と指定して EditText から取得した文字列をセットします。そして、apply 関数を呼び出すことで、保存完了です♪
// URL を入力後、キーボードを閉じた時点で入力値を保存 sendUrlEditText.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { String url = sendUrlEditText.getText().toString(); SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putString("url", url); editor.apply(); return false; } });
おわりに
SharedPreferences は Android アプリの設定を保存するのに使おうと思いましたの。設定数も2 〜 3 個とすくないですし、getSharedPreferences() ではなく、getPreferences() を使おうかしらと考えておりましたの。
ですけれども実際に書いて試してみると、アクティビティ A で保存した値が、アクティビティ B では取得できないことに気が付きました。
そんなことがございましたので、その他のポイントも含めて今回ノートいたしました。
以上です。