メニューとボタン

ゴルフのスコアカウンターにメニューボタンと戻るボタンの処理を追加して、少し使いやすくしてみる。戻るボタンのデフォルトの処理では、アプリを終了させてしまうので、データが消えてしまう。プレー中にデータが消えてしまうと大変なので、戻るボタンを押すとワーニングを表示するようにする。そうなるとアプリを終了させる方法がなくなるので、メニューからCloseを選択して終了できるようにする。また、スコアデータをクリアするメニューも追加する。

ソース

■ボタンのイベントハンドラ

戻るボタンを押すとワーニングが表示

戻るボタンを押すとワーニングが表示

ActivityのonKeyDownをOverrideする。keyCodeを見てどのボタンが押されたか判定。trueを返すと、後続のイベント処理は行われなくなる。

   @Override
   public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
	    	// Show dialog, if YES, close this application.
	    	m_alertdlg_close.show();
        	return true;
        }
        return false;
    }

ワーニングのダイアログ(m_alertdlg_close)は onCreate の中で作成

        //Alert dialog for Closing Application
    	builder.setMessage("If closed, data will be cleared. If you just hide this window, press HOME key. Are you sure you close this application? ")
    	       .setCancelable(false)
    	       .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
    	           public void onClick(DialogInterface dialog, int id) {
    	        	   finish();
    	           }
    	       })
    	       .setNegativeButton("No", new DialogInterface.OnClickListener() {
    	           public void onClick(DialogInterface dialog, int id) {
    	                dialog.cancel();
    	           }
    	       });
    	m_alertdlg_close = builder.create();

■メニューの実装

メニューボタンを押すとメニューが表示

メニューボタンを押すとメニューが表示

実装方法は、開発者サイトの Dev Guide > User Interface > Creating Menus に書いてある通り。丁寧に書いてあるので、すぐに実装できた。

http://developer.android.com/guide/topics/ui/menus.html

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください