SharedPreferencesを使うと、データの保存と書き込みが簡単にできます。
*データの書き込み
aTextView = (TextView) findViewById(R.id.myTextView);
SharedPreferences pref = this.getSharedPreferences(“MemoPrefs”, MODE_PRIVATE);
aTextView.setText(pref.getString(“memo”, “”));
説明:
“MemoPrefs”という名前のxmlファイルを呼び出して、その中にある、”memo”という名前が付けられたデータをaTextViewにセットしています。また、データの書き込みはonCreateメソッドの中で処理を行うのが一般的みたいです。
*データの保存
aTextView = (TextView) findViewById(R.id.myTextView);
int x = 10;
SharedPreferences pref = this.getSharedPreferences(“MemoPrefs”, MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.putString(“memo”, aTextView.getText().toString());
editor.putInt(“xposition”, x);
editor.commit();
説明:
“MemoPrefs”という名前のxmlファイルを呼び出して、pref.edit();でxmlファイルを編集できるようにします。次に、”memo”という名前のデータにテキストビューの文字列を代入し、”xposition”のデータにxの値を代入しています。最後に、editor.commit();して、実行しています。また、データの書き込みはonStopメソッドの中で処理を行うのが一般的みたいです。
◆SharedPreferencesで保存したデータは、
アプリを実行した状態で、「Eclipse」の「DDMS」→「ファイル・エクスプローラー」タブを選択する。
フォルダ「data」→「data」→「パッケージ名」→「shared_prefs」→「MemoPrefs.xml」に保存されています。
中身を見る場合は、MemoPrefs.xmlを選択し、「ファイル・エクスプローラー」タブの横にあるアイコン(マウスを乗せるとPull a file from the deviceと表示される)をクリックし、任意の場所にエクスポートします。◆
ブログ記事「タッチパネルの位置情報を調べる」のサンプルに、SharedPreferencesを使ったデータの保存と書き込み機能を加えてみました。
*src/com.example.android.sample/Sample.javaの変更後の全ソース:
package com.example.android.sampletwo; import android.app.Activity; import android.content.SharedPreferences; import android.os.Bundle; import android.util.Log; import android.view.MotionEvent; import android.view.Window; import android.view.WindowManager; import android.widget.TextView; public class SampleTwo extends Activity { private TextView aTextView; private TextView bTextView; private char[] charactor = new char[4]; private String moji; private int x, y; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.main); aTextView = (TextView) findViewById(R.id.myTextView); bTextView = (TextView) findViewById(R.id.myTextPosition); //データの書き込み SharedPreferences pref = this.getSharedPreferences("MemoPrefs", MODE_PRIVATE); aTextView.setText(pref.getString("memo", "")); bTextView.setText("X:" + pref.getInt("xposition", 0) + " Y:" + pref.getInt("yposition", 0)); } @Override public boolean onTouchEvent(MotionEvent event) { x = (int)event.getX(); y = (int)event.getY(); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: charactor[0] = (char)(68); //D charactor[1] = (char)(79); //O charactor[2] = (char)(87); //W charactor[3] = (char)(78); //N moji = String.valueOf(charactor); aTextView.setText(moji); bTextView.setText("X:" + x + " Y:" + y); break; case MotionEvent.ACTION_UP: charactor[0] = (char)(85); //U charactor[1] = (char)(80); //P charactor[2] = (char)(32); //スペース charactor[3] = (char)(32); //スペース moji = String.valueOf(charactor); aTextView.setText(moji); bTextView.setText("X:" + x + " Y:" + y); break; case MotionEvent.ACTION_MOVE: charactor[0] = (char)(77); //M charactor[1] = (char)(79); //O charactor[2] = (char)(86); //V charactor[3] = (char)(69); //E moji = String.valueOf(charactor); aTextView.setText(moji); bTextView.setText("X:" + x + " Y:" + y); break; case MotionEvent.ACTION_CANCEL: aTextView.setText("ACTION_CANCEL"); break; } return super.onTouchEvent(event); } protected void onStop() { super.onStop(); //データの保存 SharedPreferences pref = this.getSharedPreferences("MemoPrefs", MODE_PRIVATE); SharedPreferences.Editor editor = pref.edit(); editor.putString("memo", aTextView.getText().toString()); editor.putInt("xposition", x); editor.putInt("yposition", y); editor.commit(); }
}
コメント