各種Android Dialog創建及其監聽事件實現

 本文轉載自:[http://blog.csdn.net/andie_guo/article/details/14145135](http://blog.csdn.net/andie_guo/article/details/14145135)
  在Android開發中,我們經常會需要在Android界面上彈出一些對話框,比如詢問用戶或者讓用戶選擇。關於Android Dialog的使用方法,已經有很多blog做出了詳細的介紹(比如博客:7種形式的Android Dialog使用舉例),但是隻是給出了創建各種類型對話框的方法,並未給出如何獲取用戶在對話框中做出選擇後的數據,即如何監聽用戶做出的選擇。
接下來筆者將根據JavaDoc API文檔引導讀者詳細的瞭解提示對話框、文本框對話框、簡單列表對話框、單選項列表對話框、多選項列表對話框、自定義對話框6種類型對話框監聽事件的具體處理過程。

1、創建提示對話框。
筆者爲該對話框添加了3個按鈕,分別是 PositiveButton (確定)、NeutralButton、 NegativeButton(取消),中文意思是積極的按鈕(確定)、中立的按鈕、消極的按鈕(取消),按字面意思翻譯,有點怪,但是很形象。
這裏寫圖片描述 這裏寫圖片描述
JavaDoc API文檔
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述
創建提示對話框並實現監聽事件的代碼如下:

new AlertDialog.Builder(DialogActivity.this).setIcon(android.R.drawable.btn_star)  
    .setTitle("調查").setMessage("你喜歡海賊王嗎?")  
    .setPositiveButton("喜歡",new DialogInterface.OnClickListener() {  
                @Override  
                public void onClick(DialogInterface dialog,int which) {  
                    // TODO Auto-generated method stub  
                    Toast.makeText(DialogActivity.this,"我很喜歡海賊王", Toast.LENGTH_SHORT).show();  
                }  
            })  
    .setNeutralButton("一般",new DialogInterface.OnClickListener() {  
                @Override  
                public void onClick(DialogInterface dialog,int which) {  
                    // TODO Auto-generated method stub  
                    Toast.makeText(DialogActivity.this,"我對海賊王不怎麼感興趣", Toast.LENGTH_SHORT).show();  
                }  
            })  
    .setNegativeButton("不喜歡",new DialogInterface.OnClickListener() {  
                @Override  
                public void onClick(DialogInterface dialog,int which) {  
                    // TODO Auto-generated method stub  
                    Toast.makeText(DialogActivity.this,"我一點也不喜歡海賊王", Toast.LENGTH_SHORT).show();  
                }  
            }).show();// show很關鍵

2、創建文本框對話框。

筆者爲該對話框添加了1個文本、一個PositiveButton (確定)、一個NegativeButton(取消),並實現了PositiveButton點擊監聽事件,點擊後獲取文本框裏的內容,並以toast形式顯示出來。
這裏寫圖片描述 這裏寫圖片描述
創建文本框對話框並實現監聽事件的代碼如下:

final EditText editText = new EditText(DialogActivity.this);  
new AlertDialog.Builder(DialogActivity.this).setTitle("請輸入").setView(editText).setPositiveButton("確定",   
new DialogInterface.OnClickListener() {                
    @Override  
    public void onClick(DialogInterface dialog, int which) {  
        // TODO Auto-generated method stub  
        Toast.makeText(DialogActivity.this, "您輸入的內容是:"+editText.getText(), Toast.LENGTH_SHORT).show();  
    }  
}).setNegativeButton("取消", null).show();

3、創建簡單列表對話框。
筆者爲該對話框添加了一個數組顯示列表,並實現了點擊列表item選項監聽事件,點擊item選項後獲取item內容,並以toast形式顯示出來。
這裏寫圖片描述 這裏寫圖片描述
JavaDoc API文檔
查閱JavaDoc API文檔,讀者可根據JavaDoc API文檔來了解如何實現單擊item選項監聽事件,如下列出的setItems()方法第2個參數易知只要爲第2個參數提供OnClickListener實例即可實現監聽事件,讀者可通過這種方式觸類旁通以下幾種對話框監聽事件的實現,學會通過查閱JavaDoc API文檔來解決問題是一項開發必備的編程能力
這裏寫圖片描述
創建簡單列表對話框並實現監聽事件的代碼如下:

final String[] items = new String[]{"北京","上海","深圳"};  
new AlertDialog.Builder(DialogActivity.this).setTitle("城市列表").setItems(items, new DialogInterface.OnClickListener() {  
    @Override  
    public void onClick(DialogInterface dialog, int which) {  
        // TODO Auto-generated method stub  
        switch (which) {  
        case 0:  
            Toast.makeText(DialogActivity.this, "您選中了:"+items[0], Toast.LENGTH_SHORT).show();  
            break;  
        case 1:  
            Toast.makeText(DialogActivity.this, "您選中了:"+items[1], Toast.LENGTH_SHORT).show();  
            break;  
        case 2:  
            Toast.makeText(DialogActivity.this, "您選中了:"+items[2], Toast.LENGTH_SHORT).show();  
            break;  
        }  
    }  
}).show();

4、創建單選按鈕列表對話框。
筆者爲該對話框添加了一個單選按鈕數組顯示列表,並實現了點擊item選項監聽事件,點擊item選項後獲取item內容,並以toast形式顯示出來。
這裏寫圖片描述 這裏寫圖片描述
JavaDoc API文檔
筆者是以紅框標記的方法實現的,即提供一個數組的方式,讀者可嘗試下另外的幾種方法,比如提供ListAdapter、Cursor的方式來實現。
這裏寫圖片描述
創建單選項列表對話框並實現監聽事件的代碼如下:

final String[] items = new String[]{"蘋果","香蕉","梨子"};   
new AlertDialog.Builder(DialogActivity.this).setTitle("單選框").setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() {  

    @Override  
    public void onClick(DialogInterface dialog, int which) {  
        // TODO Auto-generated method stub  
        switch (which) {  
        case 0:  
            Toast.makeText(DialogActivity.this, "您選中了:"+items[0], Toast.LENGTH_SHORT).show();  
            break;  
        case 1:  
            Toast.makeText(DialogActivity.this, "您選中了:"+items[1], Toast.LENGTH_SHORT).show();  
            break;  
        case 2:  
            Toast.makeText(DialogActivity.this, "您選中了:"+items[2], Toast.LENGTH_SHORT).show();  
            break;  
        }  
    }  
}).setNegativeButton("取消", null).show();

5、創建複選框列表對話框。

筆者爲該對話框添加了一個複選框數組顯示列表,並實現了點擊複選框選項監聽事件,選中複選框選項後,獲取所有選中的選項,並以toast形式顯示出來。
這裏寫圖片描述 這裏寫圖片描述
JavaDoc API文檔
這裏寫圖片描述
創建複選框列表對話框並實現監聽事件的代碼如下:

final String[] items = new String[]{"音樂","電影","書籍"};   
final boolean[] selected = new boolean[]{true,false,true};  
new AlertDialog.Builder(DialogActivity.this).setTitle("複選框")  
.setMultiChoiceItems(items,selected, new DialogInterface.OnMultiChoiceClickListener() {  
    @Override  
    public void onClick(DialogInterface dialog, int which, boolean isChecked) {  
        // TODO Auto-generated method stub  
        selected[which] = isChecked;  
    }  
})  
.setPositiveButton("確定", new DialogInterface.OnClickListener() {  
    @Override  
    public void onClick(DialogInterface dialog, int which) {  
        // TODO Auto-generated method stub  
        StringBuffer str = new StringBuffer("您選中了:");  
        for(int i=0;i<3;i++){  
            if(selected[i]){  
                str.append(items[i]+",");  
            }  
        }  
        str.deleteCharAt(str.length()-1);  
        Toast.makeText(DialogActivity.this, str, Toast.LENGTH_SHORT).show();  
    }  
}).setNegativeButton("取消", null).show();

6、創建自定義列表對話框。

筆者爲該對話框添加了自定義的佈局文件,該自定義佈局文件包含一個文本標籤和一個文本框,並實現了確定按鈕點擊監聽事件,在文本框輸入內容後,獲取文本框裏的內容,並以toast形式顯示出來。
這裏寫圖片描述 這裏寫圖片描述
創建自定義列表對話框並實現監聽事件的代碼如下: 

LayoutInflater layoutInflater = LayoutInflater.from(DialogActivity.this); // 創建視圖容器並設置上下文  
final View view = layoutInflater.inflate(R.layout.dialog,null); // 獲取list_item佈局文件的視圖  
new AlertDialog.Builder(DialogActivity.this).setTitle("自定義佈局").setView(view).setPositiveButton("確定", new DialogInterface.OnClickListener() {  
    @Override  
    public void onClick(DialogInterface dialog, int which) {  
        // TODO Auto-generated method stub  
        EditText editText = (EditText) view.findViewById(R.id.likeText);  
        Toast.makeText(DialogActivity.this, "您的愛好是:"+editText.getText(), Toast.LENGTH_SHORT).show();  
    }  
}).setNegativeButton("取消", null).show();

7、參考:

7種形式的Android Dialog使用舉例
8、項目源碼:

csdn code:[email protected]:a13429921973/dialogdemo.git
csdn 資源:http://download.csdn.net/detail/a13429921973/6502755

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章