1. 程式人生 > >【Android SDK開發】各種Android Dialog建立及其監聽事件實現

【Android SDK開發】各種Android Dialog建立及其監聽事件實現

在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、參考:
8、專案原始碼:
csdn code:[email protected]:a13429921973/dialogdemo.git