スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

タグ :

   印刷ボタン       この記事に拍手する       このエントリーをはてなブックマークに追加

Return to page top

  • Comments (Close): -
  • TrackBack (Close): -

AlertDialog用のリスナ

AlertDialogを表示 の記事では、簡単にアラートの使い方を学びました。

そこでスルーしていた話題として、DialogInterface.OnClickListenerインタフェース があります。

DialogInterface.OnClickListenerは、AlertDialogのボタンを設置する際にsetPositiveButton()メソッドの引数として出てきます。

setPositiveButton(CharSequence text, DialogInterface.OnClickListener listener)



この引数では、アラートウインドウのボタンをクリックするとどういう処理をするかを定義します。なにも処理せず、クリックしたらウインドウを閉じるだけなら null の指定で済みます。

OnClickListenerについては、Buttonのクリックイベントの処理において出てきましたが、こちらはandroid.view.View.OnClickListenerでした。今回は android.content.DialogInterface.OnClickListenerで、異なるパッケージに属します。

紛らわしいですが、今回のOnClickListenerでもonClick()メソッドを定義することでボタンをクリックしたときの処理を記述します。

class クラス名 implements android.content.DialogInterface.OnClickListener {
@Override
public void onClick(DialogInterface dialog, int which) {
処理;
}
}



それでは、OKボタンが押されたときにTextViewに「OKボタンが押されました。」と表示してみます。

package sample.basic;

import android.app.Activity;
import android.os.Bundle;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.view.View;
import android.widget.EditText;
import android.text.Editable;
import android.app.AlertDialog;
import android.widget.TextView;
import android.content.DialogInterface;

public class HelloAndroid extends Activity implements OnClickListener{

private Button button1;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

button1=(Button)findViewById(R.id.button1);
button1.setOnClickListener(this);
}

public void onClick(View v){
EditText edittext1=(EditText)findViewById(R.id.edittext1);
Editable input=edittext1.getText();
AlertDialog.Builder adb=new AlertDialog.Builder(this);
adb.setTitle("Title Test");
adb.setMessage(input+"と入力されました。");
adb.setPositiveButton("OK", new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int which) {
TextView textview1=(TextView)findViewById(R.id.textview1);
textview1.setText("OKボタンが押されました。");
}
});
adb.show();
}
}


実行結果:

20110724_1
アラートウインドウのOKボタンをクリックすると・・・

20110724_2
「OKボタンが押されました。」と表示されました。

変更を加えたのは以下の部分です。

adb.setPositiveButton("OK", new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int which) {
TextView textview1=(TextView)findViewById(R.id.textview1);
textview1.setText("OKボタンが押されました。");
}
});



setPositiveButton()メソッドの第二引数にDialogInterface.OnClickListenerインタフェースを実装したクラスのインスタンスを指定するのですが、わざわざ新しくクラスを作るのはコードが冗長になるので、無名クラスを使ってそのままonClick()メソッドの実装まで行いました。

複数のボタンを設置


複雑な処理を可能にするために、ボタンを複数配置してみます。

package sample.basic;

import android.app.Activity;
import android.os.Bundle;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.view.View;
import android.widget.EditText;
import android.text.Editable;
import android.app.AlertDialog;
import android.widget.TextView;
import android.content.DialogInterface;

public class HelloAndroid extends Activity implements OnClickListener{

private Button button1;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

button1=(Button)findViewById(R.id.button1);
button1.setOnClickListener(this);
}

public void onClick(View v){
EditText edittext1=(EditText)findViewById(R.id.edittext1);
Editable input=edittext1.getText();
AlertDialog.Builder adb=new AlertDialog.Builder(this);
adb.setTitle("Title Test");
adb.setMessage(input+"と入力されました。");
adb.setPositiveButton("Yes", new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int which) {
   TextView textview1=(TextView)findViewById(R.id.textview1);
textview1.setText("Yesボタンが押されました。");
}
});
adb.setNegativeButton("No", new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int which) {
TextView textview1=(TextView)findViewById(R.id.textview1);
textview1.setText("Noボタンが押されました。");
}
});
adb.setNeutralButton("Cancel", new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int which) {
TextView textview1=(TextView)findViewById(R.id.textview1);
textview1.setText("Cancelボタンが押されました。");
}
});
adb.show();
}
}


setNegativeButton()メソッドとsetNeutralButton()メソッドを使ってボタンを2つ追加しました。

使い方は全く同じです。メソッドの名前を変えることによって違う種類のボタンだと認識されるようです。

実行します。

20110724_3
入力してボタンを押すと・・・

20110724_4
3つボタンが表示されています。

20110724_5
Cancelボタンを押しました。

関連記事
スポンサーサイト

タグ :

   印刷ボタン       この記事に拍手する       このエントリーをはてなブックマークに追加

Return to page top

Comments:

Comment Form
Only inform the site author.

Trackback+Pingback:

TrackBack URL for this entry
http://androidhacker.blog94.fc2.com/tb.php/22-a846a32c
  • 閉じるボタン
レファレンス
月別アーカイブ
リンク
カテゴリ
QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。