2013年11月19日火曜日

機能を分割分割…

前回( 初めてのAndroidアプリ開発 )のアプリの保存部分をクラス化してみました。

クラス化する理由:
管理がし易い、使いまわしやすいですね。

基本オブジェクト指向はクラス化が基本ですから、バラバラにしたいんです。
以下は実際のプログラムです。



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 件のコメント:

コメントを投稿