データを簡単に保存する方法(Preference編)


Androidのアプリケーションで、データを保存する方法を説明します。

保存する方法としては以下のものがあります。

  • ファイルとして保存
  • Preference
  • データベース(SQLite)

今回はPreferenceを取り上げてみようと思います。

SharedPreferences

SharedPreferencesとは、Androidで簡単にデータを保存/読込を行う仕組みです。
具体的にはキーと値をセットで保持し、XML形式としてshared_prefフォルダに保存されます。

保存できる値

  • int
  • float
  • long
  • boolean
  • String

保存、読み込みのためのメソッド

 

  • putInt(String key, int value)
  • putFloat(String key, float value)
  • putLong(String key, long value)
  • putBoolean(String key, boolean value)
  • putString(String key, String value)
  • getInt(String key, int defValue)
  • getFloat(String key, float defValue)
  • getLong(String key, long defValue)
  • getBoolean(String key, boolean defValue)
  • getString(String key, String defValue)

読み込みはSharedPreferencesのeditメソッドを使って、SharedPreferences.Editorクラスを取得してから行います。

保存はput〜〜メソッドを呼び出した後にcommitメソッドを呼び出す必要があります。

実際に使ってみる

PreferenceManagerのgetDefaultSharedPreferencesメソッドを使ってSharedPreferencesを取得します。

サンプルは下記の動きをします。

  • Saveボタンを押すとEditTextに入力されている文字列をキーをSaveStringとして保存
  • Loadボタンを押すとSaveStringというキーに対する値を取得してEditTextに設定
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public class SampleActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        Button saveButton = (Button)findViewById(R.id.SaveButton);
        saveButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                saveButtonClick();
            }
        });
 
        Button loadButton = (Button)findViewById(R.id.LoadButton);
        loadButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                loadButtonClick();
            }
        });
 
    }
 
    private void saveButtonClick() {
        // 保存
        EditText editText = (EditText)findViewById(R.id.EditText01);
        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
        sp.edit().putString("SaveString", editText.getText().toString()).commit();
    }
 
    private void loadButtonClick() {
        // 読み込み
        EditText editText = (EditText)findViewById(R.id.EditText01);
        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
        editText.setText(sp.getString("SaveString", null), BufferType.NORMAL);
    }
}

8 Comments