[Android] AlertDialog-加入按鈕及其對應的事件
AlertDialog除了傳遞訊息給使用者之外,可能還需要等待使用者的特定回應,以讓系統作出適當的動作,最常見的就是以按鈕選項與使用者進行互動,AlertDialog.Builder這個Nested Class提供了一些建立AlertDialog相關組成元件的函式,其中正包含按鈕,本文將以在AlertDialog加入按鈕以及其相對應事件處理為主題進行說明。
範例情境:
主畫面有個按鈕「顯示Dialog」可以顯示一個包含三個按鈕的AlertDialog,系統會針對使用者所按的按鈕,將不同文字顯示在「按鈕事件結果:」下方文字欄位,示意圖如下:
程式碼說明:
建立AlertDialog.Builder物件,並以setPositiveButton、setNeutralButton、setNegativeButton函式建立三個不同位置的按鈕並註冊其click事件的處理函式
在使用者點擊其中一個按鈕後,AlertDialog會消失,並呼叫該Button所註冊的onClick事件處理函式(見下方程式碼),下圖為使用者點擊Positive按鈕後顯示事件結果:
範例情境:
主畫面有個按鈕「顯示Dialog」可以顯示一個包含三個按鈕的AlertDialog,系統會針對使用者所按的按鈕,將不同文字顯示在「按鈕事件結果:」下方文字欄位,示意圖如下:
程式碼說明:
建立AlertDialog.Builder物件,並以setPositiveButton、setNeutralButton、setNegativeButton函式建立三個不同位置的按鈕並註冊其click事件的處理函式
AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("AlertDialog Button Demo") .setMessage("不同位置的按鈕") .setCancelable(false) .setPositiveButton("位置:Positive", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub result.setText("你按了Positive按鈕!"); } } ) .setNeutralButton("位置:Neutral", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub result.setText("你按了Neutral按鈕!"); } } ) .setNegativeButton("位置:Negative", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub result.setText("你按了Negative按鈕!"); } } );
AlertDialog呈現的樣子,注意三個Button的位置
在使用者點擊其中一個按鈕後,AlertDialog會消失,並呼叫該Button所註冊的onClick事件處理函式(見下方程式碼),下圖為使用者點擊Positive按鈕後顯示事件結果:
@Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub result.setText("你按了Positive按鈕!"); }
完整程式碼
package com.AlertDialogButton; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class AlertDialogButton extends Activity { private TextView result; private Button dialogShowButton; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //取得顯示按鈕事件所產生結果的TextView參考 result = (TextView)findViewById(R.id.result_text); //取得顯示Dialog的Button參考 dialogShowButton = (Button)findViewById(R.id.show_btn); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("AlertDialog Button Demo") .setMessage("不同位置的按鈕") .setCancelable(false) .setPositiveButton("位置:Positive", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub result.setText("你按了Positive按鈕!"); } } ) .setNeutralButton("位置:Neutral", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub result.setText("你按了Neutral按鈕!"); } } ) .setNegativeButton("位置:Negative", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub result.setText("你按了Negative按鈕!"); } } ); final AlertDialog alert = builder.create(); //註冊按鈕click動作傾聽函式 dialogShowButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub alert.show(); } } ); } }
留言
張貼留言