http://codezine.jp/article/detail/4842?p=2
前回の続き。
現在は既に登録されている名刺を表示するだけしかできません。
新規登録アクティビティへのリンクを作成します。
まずはこれまでのテンプレートとは完全に独立した登録メニューを作成。
/res/menu/list.xml
<?xml version="1.0" encoding="utf-8" ?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 新規メニュー --> <item android:id="@+id/menu_new" android:title="@string/menu_new" android:icon="@android:drawable/ic_menu_add" /> </menu>"@string/menu_new"とついでに他のメニュー文言を登録。
/res/values/string.xml
<string name="menu_new">新規</string>
<string name="menu_save">保存</string>
<string name="menu_edit">編集</string>
<string name="menu_delete">削除</string>
メニューボタンを押したときの挙動を追加。/src/com.example.bizcard/ListActivity.java
@Override
public boolean onCreateOptionsMenu(Menu menu){
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.list, menu);
return true;
}
Activity.onCreateOptionsMenu()はメニューボタンを押したときに出てくる内容を変更するメソッドです。MenuInflater.inflate()という謎のメソッドを実行することでメニューを追加することができます。
ひとつだけだとメニュー全体にボタンが現れますが、複数回追加すると追加したぶんだけメニューが増やせます。
メニューにクリック時の遷移を追加します。
こちらは元々クリックされることが想定されているので、わざわざリスナーを追加したりせずとも簡単に監視を行うことができます。
//メニューボタンのクリックイベント
public boolean onOptionsItemSelected(MenuItem item) {
int itemId = item.getItemId();
switch (itemId) {
case R.id.menu_new:
// 編集画面へ遷移
Intent registIntent = new Intent( this, RegistActivity.class);
startActivity( registIntent);
break;
}
return true;
};
Activity.onOptionsItemSelected()でメニューボタンをクリックしたときのイベントを記述します。こちらはonItemClickと違ってMenuItemというわかりやすい引数で来ます。
クリックした部分が"@+id/menu_new"であればRegistActivityにインテントを送信しています。
今回はメニューにR.menu.listしかないのでswitch文の意味が全く無いですが、メニューに複数のボタンを追加したときでも全く同様に処理することができます。
無事に新規登録メニューができました。
サンプルと色がちがうんだが何でだろう?
Androidの記事
PR
トラックバック
トラックバックURL: