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 に入れていく。
次回はテスト方法を検討。