(Android) 三種AlertDialog練習

AlertDialog 是常用來跟使用者進行互動的一種方法,最常見的可能就是例如跳出某某錯誤代碼了 ...
這次來練習在 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();
            } 
        });
執行畫面: