libro
www.tuyano.com
PhoneGapによるAndroid/iPhoneアプリ開発入門

Notification機能を活用しよう! (2/3)

作成:2012-03-26 09:16
更新:2012-03-26 09:16

■「confirm」によるボタンのカスタマイ

alertは、文字通り「注意や警告を伝えるもの」ですので、ユーザーから何かを返されることはまったく考えていません。コールバック関数も、ユーザーの操作に関する情報などは一切受け渡されません。

が、例えば「はい、いいえ」のようにユーザーから簡単な情報を受け取ることが出来れば、よりインタラクティブな処理を作成することができます。これを行うのが、notificationに用意されている「confirm」メソッドです。

confirmは、alertと似ていますが、ボタンのカスタマイズが行える点が異なります。以下のような形で定義されます。
navigator.notification.confirm( メッセージ , 関数 , タイトル , ボタン名 );
ボタン名は、例えば "one,two,three"というように、カンマで区切って記述すると、それらがそれぞれのボタンに表示されるようになります。最大3つまでボタン名を用意できます。

またボタンを押してアラートが消えた後で呼び出されるコールバック関数では、引数が1つ用意され、これにクリックしたボタンの番号(1~3の整数)が渡されるようになっています。これにより、選択したボタンごとの分岐処理が行えるようになります。

では、先ほどのサンプルを少し書きなおして、confirmを利用した例を作ってみましょう。今回は、ボタンをクリックすると、3つのボタンを持つアラートが表示されます。callbackAlertでは、クリックしたボタン名をテキストエリアに表示するようにしています。

ここでは、あらかじめボタン名を配列とテキストで用意し、選択したボタンの番号を使って配列からボタン名を取り出し表示しています。注意したいのは、ボタンの番号は「1~3である」という点です。したがって、選んだボタンの番号をそのまま使って配列から値を取り出すとうまくいきません。1を引くのを忘れないように。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

※index.html

<!DOCTYPE html>
<html>
<head>
<title>My Page</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet"
	href="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.css" />
<script type="text/javascript"
	src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
<script type="text/javascript"
	src="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.js"></script>
<script type="text/javascript" src="phonegap-1.4.1.js"></script>
<script type="text/javascript">
var btns = ["はいな","いらんわ","黙っとれ"];
var btnstr = "はいな,いらんわ,黙っとれ";

function doAction(){
	navigator.notification.confirm("これがアラートです。",onConfirm,"注意",btnstr);
}

function onConfirm(btn){
	document.getElementById('msg').innerText = "「" + btns[(btn - 1)] + "」を選んだね?";
}
</script>
	
</head>
<body>
	<!-- home page -->
	<div id="home" data-role="page">
		<div data-role="header">
			<h1>Sample</h1>
		</div>
		<div data-role="content">
			<h2>Sample Page</h2>
			<textarea id="msg"></textarea>
			<button onclick="doAction();">Click</button>
		</div>
	</div>
</body>
</html>

※関連コンテンツ

「PhoneGapによるAndroid/iPhoneアプリ開発入門」に戻る