SQLの窓

2012年11月21日


Eclipse+Android(4.0.3) のメニューの処理

※ Android の最新(2012年6月末)の開発環境に関して

SkyDrive へ移動


普通にプロジェクトを作成すると以下のようになります。メニューの XML は最初から作成されていて、メニューが作成される最初のイベント(onCreateOptionsMenu)も作成されていますので、onOptionsItemSelected を追加して、メニューの処理を実装します。

▼ ifRoom フラグの意味
それのための余地がある場合にのみ、アクションバーでこの項目を配置します。



※ この設定により、以降のメニュー位置になります


Google、AndroidのMenuボタンに“告別
Googleは既存アプリのMenuボタンが担っていた機能を、「ActionBar」クラスを使って組み込み直すよう勧めている。
package com.example.androidapp;

import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
    
    @Override
	public boolean onOptionsItemSelected(MenuItem item) {
		
		// 選択されたメニュー項目の ID
		int menuId = item.getItemId();
		// 選択されたメニュー項目に表示されているテキスト
		String menuText = item.getTitle().toString();
		// 画面上のテキストフィールド
		EditText editText = (EditText)findViewById(R.id.editText1);
		// 画面上画像表示用コントロール
		ImageView imageView = (ImageView)findViewById(R.id.imageView1);
		
		switch(menuId){
		case R.id.menu_action1:
			Log.i("DEBUG:", "処理1が選択されました");
			// 実際の番号でアイコンリソースを指定
			imageView.setImageDrawable(getResources().getDrawable(17301555));
			
			break;
		case R.id.menu_action2:
			Log.i("DEBUG:", "処理2が選択されました");
			// 定義IDでアイコンリソースを指定
			imageView.setImageDrawable(getResources().getDrawable(android.R.drawable.ic_menu_add));
			break;
			
		case R.id.menu_post:
			// 画面遷移用
			Log.i("DEBUG:", "投稿画面へ移動します");
			break;
		}

		// 選択されたメニュー項目に表示されているテキストを
		// テキストフィールドに表示
		editText.setText(menuText);

		return true;
	}	
}

ここでは、『投稿』で画面遷移を想定しています。17301555 は、android.R.drawable.ic_menu_add実際の値です。



画面定義
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:padding="20px"
        android:text="CTRL+F12でエミュレータを横にすると、メニューにテキストが付加されます" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/textView1"
        android:ems="10" />

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="48px"
        android:layout_height="48px"
        android:layout_below="@+id/editText1"
        android:layout_marginTop="24dp"
        android:src="@drawable/ic_action_search" />

</RelativeLayout>



メニュー項目定義
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/menu_post"
          android:icon="@android:drawable/ic_menu_save"
          android:title="投稿"
          android:showAsAction="ifRoom|withText" />
    <item android:id="@+id/menu_action1"
        android:title="処理1"
        android:orderInCategory="100"
        android:showAsAction="never" />
    <item android:id="@+id/menu_action2"
        android:title="処理2"
        android:orderInCategory="100"
        android:showAsAction="never" />
</menu>

android:drawable の android は、package を意味しています。ic_menu_save 以外もたくさん定義されています。

関連する Android ドキュメント

Action Bar

関連する記事

android-binding を使って Windows C#(XAML) のようなバインド処理の実装



【Androidの最新記事】
posted by lightbox at 2012-11-21 23:48 | Android | このブログの読者になる | 更新情報をチェックする
container 終わり



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり