FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

メモ帳開発③

メモ帳開発③

前回は、サブ画面を作成し、主画面から副画面の画面を遷移するところまでを記載しました。
今回は、キャンセルボタンによるサブ画面の終了処理と保存ボタンによるSQLiteへの保存の仕方を
解説いたします。

まず、簡単なキャンセルボタンによるサブ画面の終了方法です。

20130305-04.png

上記画面のキャンセルボタンに終了処理の機能を実装します。

1.はじめに、サブ画面のjavaソースファイルを開きます。

  ファイル名:SubMainActivity.java(※ご自身で作成されたサブ画面のソースファイル)

  onClick(※名称はなんでも構いません)メソッドを作成します。
  ※サブ画面にボタンを2つ配置しておりますので、ボタンによって分岐処理が行えるように
   しておきます。

  
  //ボタンのクリックイベントが発生した時
   public void onClick(View v){
    //IDごとに処理を分ける
    switch (v.getId()) {
     //保存ボタンの時
     case R.id.btn_Save:
      //処理は後ほど記載します。

     //キャンセルボタンの時
     case R.id.btn_Cancel:
      //画面を閉じる
      finish();

     default:
      break;
     }
   }

  キャンセルボタンを押したときの処理にfinish();を入れるだけです。簡単ですね。

 2.続いて、キャンセルボタンにイベント処理を追加します。

  こちらも手順としては単純です。

   ①activity_sub_main.xml(※ご自身で作成されたxmlのサブ画面)を開き、
    グラフィカルレイアウトを表示します。

   ②次にキャンセルボタンを選択し、プロパティにある「View」→「On Click」に
    上記1.で作成したonClickメソッドを指定するだけです。
    ※手書きでonClickと入力するだけです。

   これで準備完了です。エミュレーターを起動し、キャンセルボタンが動くことを確認してください。

  3.続いて、保存ボタンの処理についての実装です。

   データを保存する方法として、Androidに標準搭載されているデータベースSQLiteへの
   保存を使用したいと思います。

   SQLiteにはいくつか注意すべき点はあるのですが、はじめは何も気にせず、単純にデータベースを
   作成し、メモの内容を保存する所まで解説いたします。

   テーブル構造の設計は、単純化するために、保存日時(西暦月日何時何分何秒)とメモ内容の2つの
   カラムとします。

   データベース名:chokomemoDB
   テーブル名  :tbl_chokomemo
   カラム名   :date,naiyoh

   ①アンドロイドでは、SQLiteDatabaseオブジェクトを使って、データベースを操作します。
    SQLiteDatabaseオブジェクトを取得するには、SQLiteOpenHelperクラスを継承したクラスを作成して、
    このクラスよりSQLiteDatabaseオブジェクトを取得します。

    Eclipse上から「新規」→「クラス」を指定して、ソースファイルのひな型を作成します。
    クラス名は、DBOpenHelperとしておきます。※名称は自由です。

    作成したソースファイルのひな型下記ソースを書き加えます。
    コメントとしてソースの解説付きです。※一部解説を割愛しています。ボリュームが大きいので

    DBOpenHelper.java 
    //extends SQLiteOpenHelperを追記し、SQLiteOpenHelperクラスを継承します。
     public class DBOpenHelper extends SQLiteOpenHelper {
     //コンストラクタを用意します。
      //※Contextの説明は割愛いたします。
      // 今の所、SQLiteOpenHelperクラスを使用する時のお約束事と思っておいて下さい。
    public DBOpenHelper(Context context) {
   //スーパークラスSQLiteOpenHelperのコンストラクタを呼び出し、
       //コンテキストオブジェクト、データベース名、バージョンを指定します。
       //第1引数は、データベースを所有するコンテキストオブジェクトを指定。
       //第2引数は、データベースファイルの名前を指定。
       //※上記は、nullを指定すると、データベースはメモリー上に作られます。
       //第3引数は、無視して、常にnullを指定。
       //第4引数は、データベースのバージョンを指定。
//データベースのバージョンはテーブル構造が変わったときに自動的にあたらしい
       //バージョンに置き換えるために使用します。
       //初回バージョンは全て1で問題ないと思います。
       //データベースが作成されます。初回だけです。
       //データベース作成後、onCreateメソッドが呼び出されます。
       //2回目以降データベースの存在が確認された場合、処理は行われません。
   super(context, "chokomeoDB", null, 1);
    }

     //データベースを読み書き専用で開く
     public SQLiteDatabase getWritableDatabase(){
      //エラー処理は省略しています。
      //また、本来の開発では、データベース制御を扱う専用クラスを用意した方が良いと思います。
      //※整理できたら修正します。
      SQLiteDatabase db = super.getWritableDatabase();
      return db;
     }

    @Override
   public void onCreate(SQLiteDatabase db) {
  //テーブルを作成します。create table テーブル名(カラム1,カラム2,.,.,.)のように
      //指定します。ここでは、実際にデータを格納する予定のカラム以外に、
      //プライマリーキーの「_id」が記載されていますが、ここでは、AndroidでSQLiteを
      //使用する際の作法として覚えておいてください。
  db.execSQL(
"create table tbl_chokomemo("
+ "_id integer primary key autoincrement not null, "
+"date text not null,"
+"naiyoh text"+
");"
);
 }

     @Override
   public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  // データベースの変更が生じた場合は、バージョンアップ処理をここに記載する。
      //ここの処理は今回記載しなくて問題ありません。
   }
   }

   ②続いて、サブ画面の保存ボタンによるテーブルへのインサート処理を記述します。
    サブ画面のソースを開いて、下記のような処理を追記します。

    サブのonClickのswitch分の保存ボタンイベントにて、インサート処理を追記します。
    SubMainActivity 
 //ボタンのクリックイベントが発生した時
    public void onClick(View v){
     //IDごとに処理を分ける
     switch (v.getId()) {
      //保存ボタンの時
      case R.id.btn_Save:
      // 現在の時刻を取得
      Date date = new Date();
      // 表示形式を設定
      SimpleDateFormat strDate = new SimpleDateFormat("yyyyMMddkkmmss");
      //テキストのIDを取得
      EditText strtxtNew=(EditText)findViewById(R.id.btn_New);
      //DBOpenHelperクラスを呼び出し、読み書き専用で開く
      //プライベート変数:private DBOpenHelper dbHelper;を追記しておいてください。
      SQLiteDatabase db = dbHelper.getWritableDatabase();
      
      // 挿入するデータはContentValuesに格納
      ContentValues val = new ContentValues();
      //現在の日付を追加
      val.put( "date", strDate.format(date) );
      //テキストに入力された値を追加
      val.put( "naiyoh" , strtxtNew.getText().toString() );

      //テーブル:tbl_chokomemoに1件追加
      db.insert( "name_book_table", null, val );

以上で、新規データの保存方法は、終わりです。

次は、保存したデータを参照する方法です。メモ開発④へ

スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

コメントの投稿

非公開コメント

カテゴリ
最新記事
最新コメント
PR





最新トラックバック
月別アーカイブ
検索フォーム
RSSリンクの表示
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
logo_shop2.png
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。