クラス化する理由:
管理がし易い、使いまわしやすいですね。
基本オブジェクト指向はクラス化が基本ですから、バラバラにしたいんです。
以下は実際のプログラムです。
public class Point{
private int point = 0;
SharedPreferences sp;
private void loadPoint(){
point = sp.getInt("key_point", -1);
Log.d("LoadPoint", String.valueOf(point));
}
private void savePoint(){
sp.edit().putInt("key_point", point).commit();
}
public Point(Context _mainContext){
sp = PreferenceManager.getDefaultSharedPreferences(_mainContext);
loadPoint();
}
public int getPoint(){
loadPoint();
return point;
}
public void addPoint(int _point){
loadPoint();
point += _point;
savePoint();
}
public void setPoint(int _point){
loadPoint();
point = _point;
savePoint();
}
}
こんな感じになりました。呼び出しは
MainActivityから
Point point = new Point(this.getApplicationContext());
このようにしました。新しいクラスを作った時にActivityの情報がほしいらしく、受け渡しに苦労しました
public Point(Context _mainContext){
引数にContext型で受け取れるようにして、予備指し部分でActivityのメソッドの
getApplicationContext()
を使うと上手く動きました。
また、個人的に引っかかったのは、MainActivityのOnCreateで初期化した後でないとContextを渡せないということでした。単純なミスで1時間位悩んだ
参考:
ActivityのContextの受け渡し
http://androidgamepark.blogspot.jp/2013/01/preferencemanager-sharedpreferences.html
http://androidhacker.blog94.fc2.com/blog-entry-7.html
メモ:
ブログにコードを綺麗に載せる方法がわからん。
Bloggerの機能でないのかな?
調べてみよう
0 件のコメント:
コメントを投稿