libro
www.tuyano.com
Google androidプログラミング入門

GUI、再び! (3/7)

作成:2010-06-17 11:07
更新:2010-06-17 11:27

■アラートにボタンをつける

アラートダイアログは、ただメッセージを表示するだけでなく、「OK」「Cancel」といったボタンを表示して、ユーザーに入力を促すこともできます。これはボタンの設定と、クリックした時の処理を用意しなければいけないのでちょっと複雑になります。まず、ボタンの設定を行うメソッドとしては以下のようなものがあります。
[AlertDialog.Builder].setNeutralButton( テキスト, [DialogInterface.OnClickListener] );
[AlertDialog.Builder].setNegativeButton( テキスト, [DialogInterface.OnClickListener] );
setNeutralButtonはいわゆる「OK」ボタン、setNegativeButtonは「キャンセル」ボタンに相当するものと考えてください。AlertDialog.Builderではこのように「肯定するボタン」「否定するボタン」の2つが用意できます。

これらは、第1引数に、ボタンに表示するテキストを指定します。第2引数には、DialogInterface.OnClickListenerというクラスのインスタンスを渡します。これは、クリックした時のイベント処理を実装するクラスで、ここでは以下のように作成をしています。
new DialogInterface.OnClickListener(){
    public void onClick(DialogInterface dialog, int button){
        ……クリック時の処理……
    }
}
割とよくある実装法は、このように無名クラスとしてonClickメソッドを実装するやり方でしょう。ここでクリックした際の処理を記述しておけばいいわけです。もちろん、Activityクラス自身にDialogInterface.OnClickListenerをimplementsしたり、別にクラスを用意して実装してもかまいません。

では、以下に利用例をあげておきましょう。ここではOK/Cancelの2つのボタンを表示し、クリックするとTextView(textというIDにしてある)に簡単なメッセージを表示させています。処理そのものは別に難しくないので、実際に書いて動かしてみればすぐに使い方はわかるでしょう。

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

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

●プログラム・リスト●

package jp.tuyano;

import android.app.*;
import android.content.DialogInterface;
import android.os.Bundle;
import android.widget.TextView;

public class SampleApp extends Activity {
	private TextView text1;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		text1 = (TextView)this.findViewById(R.id.text);
		
		AlertDialog.Builder builder = new AlertDialog.Builder(this);
		builder.setMessage("これはアラートのテストです。");
		DialogInterface.OnClickListener oklistener = new DialogInterface.OnClickListener(){
			public void onClick(DialogInterface dialog, int button){
				text1.setText("OKしたよ!");
			}
		};
		DialogInterface.OnClickListener cancellistener = new DialogInterface.OnClickListener(){
			public void onClick(DialogInterface dialog, int button){
				text1.setText("キャンセルされました...");
			}
		};
		builder.setNeutralButton("おっけー!", oklistener);
		builder.setNegativeButton("cancel", cancellistener);
		builder.show();
	}

}

※関連コンテンツ

「Google androidプログラミング入門」に戻る