ゲームなんかのプレイ・データを保存するには、SharedPreferences がラクでいいね。
扱いも簡単だし、書き込み/読み込み順番とか気にしなくてもいい。
データの書き込み
下記、例では指定したファイル(xmlName)に、3つのデータを書き込んでいる。
// write
public void write_xml( String xmlName ,int i, String key, String key2 ) {
// MODE_WORLD_READABLE:他のアプリから読み取り可能
// MODE_WORLD_WRITEABLE:他のアプリから書込み可能
// MODE_PRIVATE:当アプリのみ使用可能
SharedPreferences pref =
getSharedPreferences( xmlName, MODE_WORLD_READABLE | MODE_WORLD_WRITEABLE );
Editor edit = pref.edit();
edit.putInt( "score", i );
edit.putString( "key", key );
edit.putString( "key2", key2 );
edit.commit();
}
まず、getSharedPreferences で、書き込むファイルを取得する。
引数のxmlName には、xmlのファイル名を指定する。
ただし、拡張子はつけない。
pref.xml だとしたら、”pref” となる。
次に、Editor を取得する。
書き込みは、このEditor を介して行われる。
書き込み内容の設定は、putInt などを使う。
edit.putInt( "score", i ); 第一引数 : データ名 第二引数 : データの値
putIntの他にも、putString, putBoolean, putLong, putFloat が使える。
設定をしたら、commit() でファイルに書き込む。
ちなみに、commit() と同じ役割のapply() がある。
違いは結果を返すか、返さないか。
commit() だと boolean を返してくれるので、その値を調べれば成功したかがわかる。
データの読み込み
下記、例では指定したファイル(xmlName)から、3つのデータを読み込んでいる。
// Read
public void read_xml( String xmlName ) {
SharedPreferences pref =
getSharedPreferences( xmlName, MODE_WORLD_READABLE | MODE_WORLD_WRITEABLE );
int i = pref.getInt( "score", 0 );
String str = pref.getString( "key", "" );
String str2 = pref.getString( "key2", "" );
Log.d( "TEST", "read | score :" +i +" key:"+str +" key2:"+str2 );
}
手順は、書き込みの時とほぼ同じ。
method の第二引数は、デフォルト値となる。
なにかの原因で読み込めなかった場合、この値が返ってくる。
データの削除
すべてのデータを削除するには、下記のようになる。
// clear
public void delete_data( String xmlName ) {
SharedPreferences pref =
getSharedPreferences( xmlName, MODE_WORLD_READABLE | MODE_WORLD_WRITEABLE );
Editor editor = pref.edit();
editor.clear(); // all clear
editor.commit();
//--
}
editor を取得して、clear()。その後、commit() を行う。
commit() をしないと、反映されないので注意。
データを指定して消す場合は、remove を使う。
remove( String key );
なお、全削除には、xmlファイルごと消してしまう方法もある。
しかしその場合、すぐには反映されず、アプリの再起動が必要となるようだ。


![著作権フリー背景素材集[家]](http://img.dlsite.jp/modpub/images2/work/doujin/RJ089000/RJ088095_img_mini.jpg)





migimaki.com











![著作権フリー背景素材集[家]](http://img.dlsite.jp/modpub/images2/work/doujin/RJ089000/RJ088095_img_sam.jpg)
右巻きソフトウェア
