Android Studio(メモリストのアプリ12_作業ログと定数)

■作業ログの作成、保存とコード内の定数の整理。
前回のフォアグラウンドサービスもメモリストのアプリに実装し、全選択のボタンの追加など少し修正して、下のような画面で一端最終にする。


あとは画面の中での操作内容をログとして出力・保存したい。ログ用のテーブルを新しく作成。ログ用のクラスを作って、コード内の操作に応じたコメントを出力させるよう setLogInfo メソッドを各クラスに埋めこんでいく。これは、staticメソッドにしている。保存は、アプリ終了時に saveLogInfo メソッドを使う。

package com.example.sampleproject006_sqlite;

import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteStatement;

import java.util.HashMap;

public class LogUtil {

    private static HashMap logMap_ = new HashMap();

    public static void setLogInfo(String id, String textmeg) {
        logMap_.put(id, textmeg);
    }

    public static void saveLogInfo(SQLiteDatabase db) {
            SQLiteStatement stmt;
            stmt = db.compileStatement("insert into Log values (?, ?);");
            for (Object id : logMap_.keySet()) {
                stmt.bindString(1, (String) id);
                stmt.bindString(2, (String) logMap_.get(id));
                stmt.executeInsert();
            }
            db.setTransactionSuccessful();
     }
}

また、コード内にログの文字列を直接書き込むのではなく、もともとAndroidのプロジェクト作成時に一緒に作られる strings.xml を使う。ファイル内は下のような構成で、コード内では、context.getString(R.string.log_info) のように呼び出す。

<resources>
    <string name="app_name">sampleProject006_SQLite</string>
    <string name="log_info">aaa</string>
    <string name="csvFileName">words.csv</string>
    <string name="dbName">AAAAAAA</string>
</resources>

ファイル名やデータベース名などの文字列となるものも strings.xml に入れていく。
次回はテスト方法を検討。