這次來練習在 Android 中的三種 AlertDialog
第一種是 ProgressDialog,
這就像我們在 Windows 中或玩一些網頁 Flash 遊戲時常出現的『載入中』對話視窗,主要目的是在背景中先載入一些資源,所以在練習時會搭配『執行緒』。
首先在專案的 main.xml 中加入按鈕,分別作為三種練習的啟動,也就是說按下第一個按鈕後就會啟動 ProgressDialog,
宣告、產生按鈕並使用:
public Button showProgress_button;
public ProgressDialog myDialog;
如果已在 main.xml 中放上按鈕,則 R.java 會自動產生 id,透過下列這行程式將 showProgress_button 設定為放在 main.xml 中的 button1,之後的練習同理。
showProgress_button = (Button)findViewById(R.id.button1);
按下按鈕後的行為
showProgress_button.setOnClickListener(new OnClickListener()
{
public void onClick(View arg0) {
// TODO Auto-generated method stub
myDialog = ProgressDialog.show(AlertDialogActivity.this, "讀取中", "This App is running...");
new Thread()
{
public void run()
{
try
{
sleep(3000);
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
myDialog.dismiss();
}
}
}.start();
}
});
執行畫面:
第二種是一般 AlertDialog ,
常用來當發生錯誤、或提示使用者時出現,讓使用者按下之中出現的按鈕。
宣告、產生按鈕並使用:
private Button normal_button;
normal_button = (Button)findViewById(R.id.button2);
按下按鈕後的行為:
normal_button.setOnClickListener(new OnClickListener()
{
public void onClick(View arg0) {
// TODO Auto-generated method stub
new AlertDialog.Builder(AlertDialogActivity.this).setTitle("Practice").setMessage("a example for testing AlertDialog")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
finish();
}
}).show();
}
});
執行畫面:
第三種則是強化版的 AlertDialog,
具有多個選項可讓使用者進行選擇,並給予對應的回應。
宣告、產生按鈕並使用:
private Button choose_button;
choose_button = (Button)findViewById(R.id.button3);
按下按鈕後的行為:
choose_button.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
new AlertDialog.Builder(AlertDialogActivity.this).setTitle("Practice")
.setItems(R.array.dialog_items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
CharSequence strDialogBody = getString(R.string.dialog_body);
String ary[] = getResources().getStringArray(R.array.dialog_items);;
new AlertDialog.Builder(AlertDialogActivity.this).setTitle("Practice")
.setMessage(strDialogBody + ary[which])
.setNeutralButton(R.string.dialog_exit, new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
finish();
}
}).show();
}
}).show();
}
});
執行畫面: