vaguely

和歌山に戻りました。ふらふらと色々なものに手を出す毎日。

Androidでテキストエディタ その3

少々間が空いてしまいました。

今回はユーザーが書き込んだデータをSQLiteに保存できるようにします。
まずはボタンの作成から。

保存ボタンを作る

まずは画面上部に表示しているActionBarに、保存ボタンを追加します。

ボタンに使用するアイコンですが、公式で公開しているものを使用します。

Android Developer

Action Bar Icons>holo_dark>05_content_save を開くと、何やらフォルダがたくさんあります。
これは画面の解像度に合わせて切り替えるための画像で、(プロジェクト名)>app>src>resにある同じ名前のフォルダにそれぞれ追加します。

完了したら、(プロジェクト名)>app>src>res>menuにある、保存ボタンを追加したいActivityの名前のついたXMLファイルを開きます。

edit_view.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.notenotenote.app.EditViewActivity" >

    <item android:id="@+id/action_save"
        android:title="@string/action_save"
        android:icon="@drawable/ic_action_save"
        android:showAsAction="always" />
</menu>

menuタグの中に、itemタグを加えることでActionBarにボタンが表示されます。

  • android:titleは特にActionBarには表示されないものの、削除するとエラーになります。
  • android:iconではアイコン画像のファイル名を拡張子無しで書いておけば、あとは自動で最適な画像を表示してくれるようです。便利。
  • android:showAsActionは該当のアイコンを表示する条件を指定します。今回は常に表示したいのでalwaysで。

[参考]

ボタン押下のイベントを取得する

ボタンが押されたら認識できるようにします。

EditViewActivity.java

@Override

public boolean onOptionsItemSelected(MenuItem item) {

    switch(item.getItemId()){

    case R.id.action_share:
        this.shareNote();
        return true;

    case R.id.action_save:
        this.saveNote();
        return true;

    }

    return false;

}

前回の通り、ActivityをBlank Activityとして作成していると、自動でonOptionsItemSelectedが作成されていると思います(全く空の状態からも作成できるようになりたいところですが)。

ボタンを押すとこのメソッドが呼ばれ、引数のMenuItemのgetItemId()でID(edit_view.xmlで指定したもの)を取得して処理を切り分けます。