android中的對話方塊形式有四種,分別是一般對話方塊形式,列表對話方塊形式,選項按鈕對話方塊,多選按鈕對話方塊,下面我一一對他們進行詳解。
<一>一般對話方塊
一般對話方塊形式如:
具體實現代碼如下:
1 new AlertDialog.Builder(this) 2 .setTitle("刪除")//設定標題 3 .setMessage("確定要刪除指定的記錄?")//設定提示訊息 4 .setPositiveButton("確定",new DialogInterface.OnClickListener() {//設定確定的按鍵 5 @Override 6 public void onClick(DialogInterface dialog, int which) { 7 //do something 8 } 9 })10 .setNegativeButton("取消",new DialogInterface.OnClickListener() {//設定取消按鍵11 @Override12 public void onClick(DialogInterface dialog, int which) {13 //do something14 }15 })16 .setNeutralButton("忽略",new DialogInterface.OnClickListener() {//中立的,什麼也不錯17 @Override18 public void onClick(DialogInterface dialog, int which) {19 //do something20 }21 })22 .setCancelable(false)//設定按返回鍵是否響應返回,這是是不響應23 .show();//顯示
設定每一個Button按鍵時,都會傳(CharSequence text, OnClickListener listener)參數,text是按鍵的文本,listener是一個DialogInterface.OnClickListener(),所以我們要建立這個對象並實現它的點擊事件。在點擊事件中有一個which參數不知道大家有沒有注意,這個which實際上代表的是一個唯一的int型數值。像上面的setPositiveButton中的which代表的是-1,setNegativeButton中的which代表的是-3,setNeutralButton中的which代表的是-2.
所以在這裡為了代碼的簡化,我們不再為每一個Button建立DialogInterface.OnClickListener()對象,而是只建立一個DialogInterface.OnClickListener()對象來分別實現它們的點擊事件。具體實現代碼如下:
1 DialogInterface.OnClickListener dialog = new DialogInterface.OnClickListener() { 2 public void onClick(DialogInterface dialog, int which) { 3 if(which == DialogInterface.BUTTON_POSITIVE){//確定按鍵的點擊事件 4 Toast.makeText(MainActivity.this, "ok!", 1).show(); 5 } 6 else if(which == DialogInterface.BUTTON_NEGATIVE){//取消按鍵的點擊事件 7 Toast.makeText(MainActivity.this, "cancel", 1).show(); 8 } 9 else if(which == DialogInterface.BUTTON_NEUTRAL){//忽略按鍵的點擊事件10 Toast.makeText(MainActivity.this, "不知道", 1).show();11 }12 }13 };
1 //對話方塊2 new AlertDialog.Builder(this)3 .setTitle("刪除")//設定標題4 .setMessage("確定要刪除指定的記錄?")//設定提示訊息5 .setPositiveButton("確定",dialog)6 .setNegativeButton("取消",dialog)7 .setNeutralButton("忽略",dialog)8 .setCancelable(false)//設定按返回鍵是否響應返回,這是是不響應9 .show();//顯示
<二>列表對話方塊
懂得了上面的一般對話方塊的實現,那麼下面的三種對話方塊就很容易實現了。列表對話方塊的實現效果如:
具體實現代碼如下:
1 final String[] names = {"姚明","科比","詹姆斯"};//列表中顯示的內容組成的數組 2 new AlertDialog.Builder(this) 3 .setTitle("列表對話方塊")//對話方塊標題 4 .setItems(names, new DialogInterface.OnClickListener() {//每一條的名稱 5 public void onClick(DialogInterface dialog, int which) {//響應點擊事件 6 Toast.makeText(MainActivity.this, names[which], 1).show(); 7 } 8 }) 9 .setPositiveButton("確定", new DialogInterface.OnClickListener() {//響應確定鍵的點擊事件10 11 @Override12 public void onClick(DialogInterface dialog, int which) {13 //do something14 }15 })16 .show();
在設定列表顯示時我們用到了setItems,在setItems中有(CharSequence[] items, OnClickListener listener)這樣的參數,其中第一個參數是列表顯示中的每一個條目的名稱的數組,第二個是點擊一個列表顯示條目時的響應事件,所以在這裡我們可以事先定義好一個數組來存放要顯示的列表名稱。這樣在用時就方便多了。在條件點擊影響事件時我們要實現onclick事件,這裡也有一個參數which,它在API中的解釋為which The
button that was clicked (e.g. DialogInterface.BUTTON1) or the position of the item clicked.它和上面的which一樣,也是代表一個唯一的數值。它在這裡代表的是自己定義的那個存放列表名稱的數組的下標值,因此我們可以通過下標來訪問數組中的數值。當然我們也可以在列表對話方塊中增加button,這樣也是可以的,我們當然也可以為這個button做響應事件。這裡我就不多說了。
<三>選項按鈕對話方塊
選項按鈕對話方塊的運行效果如下:
具體實現代碼如下:
1 final String[] lang = {"NBA","英超","西甲"} ; 2 new AlertDialog.Builder(this) 3 .setTitle("選項按鈕對話方塊")//標題 4 .setSingleChoiceItems(lang,0,new DialogInterface.OnClickListener() {//設定條目 5 public void onClick(DialogInterface dialog, int which) {//響應事件 6 // do something 7 //關閉對話方塊 8 dialog.dismiss(); 9 }10 })11 .setPositiveButton("確定", new DialogInterface.OnClickListener() {12 13 @Override14 public void onClick(DialogInterface dialog, int which) {15 //do something16 }17 })//添加button並響應點擊事件18 .show();
在設定列表顯示時我們用到了setSingleChoiceItems,在setSingleChoiceItems中有(CharSequence[]
items, int checkedItem,OnClickListener listener)
這樣的參數,其中第一個參數是列表顯示中的每一個條目的名稱的數組,第二個是預設讓哪一個條目被選擇上,如上面的代碼,我讓第一條被預設選上,所以我就在checkedItem這個參數這裡寫上第一條在數組中的下標值0,如果我預設都沒被選上,我就在這裡寫上-1,第三個是點擊一個列表顯示條目時的響應事件,所以在這裡我們可以事先定義好一個數組來存放要顯示的列表名稱。這樣在用時就方便多了。在條件點擊影響事件時我們要實現onclick事件,這裡也有一個參數which,它在API中的解釋為which The
button that was clicked (e.g. DialogInterface.BUTTON1) or the position of the item clicked.它和上面的which一樣,也是代表一個唯一的數值。它在這裡代表的是自己定義的那個存放列表名稱的數組的下標值,因此我們可以通過下標來訪問數組中的數值。在點擊完我們可以設定讓這個對話方塊消失,這裡可以用dialog.dismiss();讓對話方塊消失。當然我們也可以在列表對話方塊中增加button,這樣也是可以的,我們當然也可以為這個button做響應事件。這裡我就不多說了。
<四>多選按鈕對話方塊
多選按鈕對話方塊的運行效果如下:
1 final String[] langs = { "NBA", "西甲", "英超" }; 2 final boolean[] selected = new boolean[] { true, false, true };// 一個存放Boolean值的數組 3 new AlertDialog.Builder(this) 4 .setTitle("多選列表對話方塊") 5 // 標題 6 .setMultiChoiceItems(langs, selected, 7 new DialogInterface.OnMultiChoiceClickListener() {// 設定多選條目 8 public void onClick(DialogInterface dialog,int which, boolean isChecked) { 9 // do something10 }11 })12 .setPositiveButton("確定",13 new DialogInterface.OnClickListener() {14 public void onClick(DialogInterface dialog,15 int which) {16 // do something17 }18 }).show();
在多選按鈕對話方塊中,我們用setMultiChoiceItems來設定多選按鈕,這裡setMultiChoiceItems中的參數為(CharSequence[]
items, boolean[] checkedItems, OnMultiChoiceClickListener listener),第一個參數為要顯示的條目的名稱的數組,這裡我們用一個String型的數組來存放,第二個是一個預設哪些按鈕被選中的Boolean型數組,這裡,我讓下標為0和為2的條目預設被選中,當然,我們也可以事先定義好一個Boolean型數組。第三個參數就是點擊多選按鈕條目時的響應事件。在這個onClick事件中,同樣有三個參數(DialogInterfacedialog,
int which, boolean isChecked),第一個參數代表的是這個對話方塊,第二個參數代表的是String數組中存放的數值的下標值。第三個參數代表的是Boolean數組中的boolean值。當然我們也可以在列表對話方塊中增加button,這樣也是可以的,我們當然也可以為這個button做響應事件。這裡我就不多說了。
以上就是Android中的四種對話方塊形式,在用的時候我們要學會靈活運用,不要局限於一種特定的形式,我們可以設計自己的對話方塊。不要被思想所束縛。
轉載自http://www.cnblogs.com/zxl-jay/archive/2011/09/30/2196671.html