Android開發之使用AlertDialog創建對話框,單選框和多選框


對話框:

對話框的icon,title,message等都可以不設置。

單選框和多選框與對話框勾選步驟基本上一致。

對話框的構建步驟:

1.使用AlertDialog類的內部類Builder類new 一個builder對象

2.設置圖標setIcon() ;                            builder.setIcon();

3.設置title setTitle();                          builder.setTitle();

4.設置Message  setMessage();             builder.setMessage();

5.設置確定按鈕  setPositiveButton() ;      builder.setPositiveButton()

6.設置取消按鈕   setNegativeButton();    builder.setNegativeButton()

7.設置顯示     show();                           builder.show();

代碼:

 1     public void click(View v) {
 2         AlertDialog.Builder builder = new AlertDialog.Builder(this);
 3         builder.setIcon(android.R.drawable.alert_dark_frame);
 4         builder.setTitle("鼻血儉朴");
 5         builder.setMessage("尹志平,請考慮好!!!");
 6         builder.setPositiveButton("確定", new OnClickListener() {
 7 
 8             @Override
 9             public void onClick(DialogInterface dialog, int which) {
10                 Toast.makeText(MainActivity.this, "謝謝使用本軟件,關閉", 0).show();
11             }
12         });
13 
14         builder.setNegativeButton("取消", new OnClickListener() {
15 
16             @Override
17             public void onClick(DialogInterface dialog, int which) {
18                 Toast.makeText(MainActivity.this, "沒有子宮,肯定不成功", 0).show();
19             }
20         });
21 
22         builder.show();
23     }

 

單選框:

注意:構建過程中,不可以使用setMessage()方法,否則會不顯示選項列表。

使用setSingleChoiceItems()方法設置單選

Builder.setSingleChoiceItems(CharSequence[] items, int checkedItem, OnClickListener listener)

參數:

1.items:定義的單選選項數組

2.checkedItem:默認被選中的選項。默認不選中為-1,選中數組第一個為0,選中數組第二個為1,選擇數組第三個為2

3.listener:偵聽器

1         builder.setSingleChoiceItems(items, -1, new OnClickListener() {
2 
3             @Override
4             public void onClick(DialogInterface dialog, int which) {
5                 Toast.makeText(MainActivity.this, "選擇的是:" + items[which], 0)
6                         .show();
7                 dialog.dismiss();
8             }
9         });

偵聽器的onClick()方法的兩個參數

1.dialog:點擊時觸發的對話框

2.which:被點擊按鈕的位置或者項目的位置

 

代碼:

 1     public void click1(View v) {
 2         AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
 3         builder.setIcon(android.R.drawable.alert_dark_frame);
 4         builder.setTitle("鼻血儉朴");
 5         final String[] items = new String[] { "女", "男" };
 6         builder.setSingleChoiceItems(items, -1, new OnClickListener() {
 7 
 8             @Override
 9             public void onClick(DialogInterface dialog, int which) {
10                 Toast.makeText(MainActivity.this, "選擇的是:" + items[which], 0)
11                         .show();
12                 dialog.dismiss();
13             }
14         });
15         builder.show();
16     }

 

多選框:

注意:構建過程中,不可以使用setMessage()方法,否則會不顯示選項列表。

使用setMultiChoiceItems()方法設置多選

Builder.setMultiChoiceItems(CharSequence[] items, boolean[] checkedItems, OnMultiChoiceClickListener listener)
參數:
1.items:定義的多選選項的數組
2.checkedItems:boolean[]數據記錄多選選項數組中那個被選中,選中了為true,沒有選中為false
3.listener:偵聽器,多選的偵聽器為OnMultiChoiceClickListener
1         builder.setMultiChoiceItems(items, checkedItems,
2                 new OnMultiChoiceClickListener() {
3 
4                     @Override
5                     public void onClick(DialogInterface dialog, int which,
6                             boolean isChecked) {
7                         checkedItems[which] = isChecked;
8                     }
9                 });

偵聽器的onClick()方法的兩個參數

1.dialog:點擊時觸發的對話框

2.which:被點擊按鈕的位置或者項目的位置

3.isChecked:點擊某個選項,如果該選項之前沒被選擇,那么此時isChecked的值為true,不勾選則為false。

 

代碼:

 1     public void click2(View v) {
 2         AlertDialog.Builder builder = new AlertDialog.Builder(this);
 3         builder.setIcon(android.R.drawable.alert_dark_frame);
 4         builder.setTitle("請選擇多個選項");
 5         final String[] items = new String[] { "貂蟬", "西施", "主管", "設計", "開發" };
 6         final boolean[] checkedItems = new boolean[] { false, false, false,
 7                 false, false };
 8         builder.setMultiChoiceItems(items, checkedItems,
 9                 new OnMultiChoiceClickListener() {
10 
11                     @Override
12                     public void onClick(DialogInterface dialog, int which,
13                             boolean isChecked) {
14                         checkedItems[which] = isChecked;
15                     }
16                 });
17         builder.setPositiveButton("確定", new OnClickListener() {
18 
19             @Override
20             public void onClick(DialogInterface dialog, int which) {
21 
22                 String text = "";
23                 for (int i = 0; i < items.length; i++) {
24                     if (checkedItems[i]) {
25                         text += items[i];
26                     }
27                 }
28                 Toast.makeText(MainActivity.this, text, 0).show();
29                 dialog.dismiss();
30 
31             }
32         });
33         builder.show();
34     }

 

AlartDialog按Back鍵的處理:

可以通過代碼設置:默認是true,就是說可以通過按back鍵取消了。

builder.setCancelable(false);  //默認為true

同時可以設置back鍵的監聽,自定義動作

1 builder.setOnCancelListener(new OnCancelListener() {
2 
3             @Override
4             public void onCancel(DialogInterface dialog) {
5                 //定義的操作
6             }
7         });

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM