[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();
}
}
);
}
}



留言
張貼留言