本文轉載自:[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