2010年11月2日火曜日

SharedPreferencesクラスで簡単Save Load

Androidでは、比較的簡単に設定情報の保存が行えます。
getSharedPreferences関数でファイル名からSharedPreferencesクラスのインスタンスを生成し、編集するためにEditorメソッドでEditorインスタンスを取得後、編集、保存します。

    Button mSaveButton = null;
    Button mLoadButton = null;
    Button mRemoveButton = null;
    EditText mTextView = null;


        mTextView = (EditText)findViewById(R.id.textView);
       
        mSaveButton = (Button)findViewById(R.id.saveButton);
        mSaveButton.setOnClickListener(new OnClickListener() {
            // Saveボタン押下時処理
            public void onClick(View v) {
                // settings.xmlファイルのSharedPreferencesインスタンスを生成
                SharedPreferences sp = getSharedPreferences("settings", MODE_PRIVATE);
               
                // Editorを取得
                SharedPreferences.Editor editor = sp.edit();
               
                // EditTextから文字列取得
                SpannableStringBuilder ssb = (SpannableStringBuilder)mTextView.getText();
                String str = ssb.toString();
               
                // Editorに保存データ設定
                editor.putString("text", str);
               
                // Editorを保存
                editor.commit();
            }
        });
       
        mLoadButton = (Button)findViewById(R.id.loadButton);
        mLoadButton.setOnClickListener(new OnClickListener() {
            // Loadボタン押下時処理
            public void onClick(View v) {
                // settings.xmlファイルのSharedPreferencesインスタンスを生成
                SharedPreferences sp = getSharedPreferences("settings", MODE_PRIVATE);
               
                // 保存文字列を取得
                String str = sp.getString("text", "");
                mTextView.setText(str);
            }
        });
       
        mRemoveButton = (Button)findViewById(R.id.removeButton);
        mRemoveButton.setOnClickListener(new OnClickListener() {
            // Removeボタン押下時処理
            public void onClick(View v) {
                // settings.xmlファイルのSharedPreferencesインスタンス生成
                SharedPreferences sp = getSharedPreferences("settings", MODE_PRIVATE);
               
                // Editor取得
                SharedPreferences.Editor editor = sp.edit();
               
                // 文字列を削除
                editor.remove("text");
               
                // 削除を確定&保存
                editor.commit();
            }
        });

上の例では、Saveボタンを押して文字列を保存、Loadボタンで保存した文字列を読み出し、Removeボタンで削除を行います。

保存ファイル名はgetSharedPreferencesでインスタンス取得時に指定します。上の例ではsettingsというXMLファイルです。

SharedPreferencesのgetString / putStringメソッドで文字列の格納・取り出しが行えます。上の例では"text"と指定していますが、これはXMLファイルに保存する時の保存タグを指定しているものです。他にputIntやputBoolean等、大体の基本型は同じように扱えるようです。

最後に、commitで変更を確定しています。これが無いと実際の保存処理が行われません。

0 件のコメント:

コメントを投稿