Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android技術基礎 >> 第30章、常見對話框之一AlertDialog(從零開始學Android)

第30章、常見對話框之一AlertDialog(從零開始學Android)

編輯:Android技術基礎

在Android應用中,有多種對話框:Dialog、AlertDialog、ProgressDialog、時間、日期等對話框。

  (1)Dialog類,是一切對話框的基類,需要注意的是,Dialog類雖然可以在界面上顯示,但是並非繼承與習慣的View類,而是直接從java.lang.Object開始構造出來的,類似於Activity,Dialog也是有生命周期的,它的生命周期由Activity來維護。Activity負責生產,保存,回復它,在生命周期的每個階段都有一些回調函數供系統方向調用。

  (2)AlertDialog是Dialog的一個直接子類,AlertDialog也是Android系統當中最常用的對話框之一。一個AlertDialog可以有兩個Button或3個Button,可以對一個AlertDialog設置title和message.不能直接通過AlertDialog的構造函數來生成一個AlertDialog.一般生成AlertDialog的時候都是通過它的一個內部靜態類AlertDialog.builder來構造的。

  (3)顧名思義,這個Dialog負責給用戶顯示進度的相關情況,它是AlertDialog的一個子類。

  本章我們著重講解一下AlertDialog!

  AlertDialog的構造方法全部是Protected的,所以不能直接通過new一個AlertDialog來創建出一個AlertDialog。

  要創建一個AlertDialog,就要用到AlertDialog.Builder中的create()方法。

  使用AlertDialog.Builder創建對話框需要了解以下幾個方法:

    setTitle :為對話框設置標題
    setIcon :為對話框設置圖標
    setMessage:為對話框設置內容
    setView : 給對話框設置自定義樣式
    setItems :設置對話框要顯示的一個list,一般用於顯示幾個命令時
    setMultiChoiceItems :用來設置對話框顯示一系列的復選框
    setNeutralButton :普通按鈕

    setPositiveButton :給對話框添加"Yes"按鈕
    setNegativeButton :對話框添加"No"按鈕
    create : 創建對話框
    show :顯示對話框

 

一、簡單對話框

  Dialog類雖然可以在界面上顯示,但是並非繼承與習慣的View類,而是直接從java.lang.Object開始構造出來的。

  1、打開“src/com.genwoxue.alertdialog_a/MainActivity.java”文件。

  然後輸入以下代碼:

[java] view plain copy  
  1. package com.example.alertdialog_a;  
  2.   
  3. import android.os.Bundle;  
  4. import android.app.Activity;  
  5. import android.app.AlertDialog.Builder;  
  6. import android.app.AlertDialog;  
  7.   
  8. public class MainActivity extends Activity {  
  9.   
  10.     @Override  
  11.     protected void onCreate(Bundle savedInstanceState) {  
  12.         super.onCreate(savedInstanceState);  
  13.         setContentView(R.layout.activity_main);  
  14.         //AlertDialog的構造方法全部是Protected的,所以不能直接通過new一個AlertDialog來創建出一個AlertDialog。  
  15.         //要創建一個AlertDialog,就要用到AlertDialog.Builder中的create()方法  
  16.         Builder adInfo=new AlertDialog.Builder(this);  
  17.         adInfo.setTitle("簡單對話框");                       //設置標題  
  18.         adInfo.setMessage("這是一個美麗的傳說,精美的石頭會唱歌……");  //設置內容  
  19.         adInfo.setIcon(R.drawable.ic_launcher);          //設置圖標  
  20.         adInfo.create();  
  21.         adInfo.show();  
  22.           
  23.     }  
  24. }  


  2、運行,顯示界面:

  \

 

二、帶按鈕的AlertDialog

  我們在執行刪除、確認等操作時,常常在對話框中單擊按鈕,AlertDialog可以顯示3個按鈕。

  1、打開“src/com.genwoxue.alertdialog_bMainActivity.java”文件。

  然後輸入以下代碼:

[java] view plain copy  
  1. package com.example.alertdialog_b;  
  2.   
  3. import android.os.Bundle;  
  4. import android.app.Activity;  
  5. import android.app.AlertDialog.Builder;  
  6. import android.app.AlertDialog;  
  7. import android.content.DialogInterface;  
  8.   
  9. public class MainActivity extends Activity {  
  10.   
  11.     @Override  
  12.     protected void onCreate(Bundle savedInstanceState) {  
  13.         super.onCreate(savedInstanceState);  
  14.         setContentView(R.layout.activity_main);  
  15.   
  16.         Builder dialog = new AlertDialog.Builder(this);  
  17.         dialog.setTitle("確定刪除?");  
  18.         dialog.setMessage("您確定刪除該條信息嗎?");  
  19.         dialog.setIcon(R.drawable.ic_launcher);  
  20.         //為“確定”按鈕注冊監聽事件  
  21.         dialog.setPositiveButton("確定", new DialogInterface.OnClickListener() {  
  22.              @Override  
  23.              public void onClick(DialogInterface dialog, int which) {  
  24.                   // 根據實際情況編寫相應代碼。  
  25.              }  
  26.         });  
  27.         //為“取消”按鈕注冊監聽事件   
  28.         dialog.setNegativeButton("取消", new DialogInterface.OnClickListener() {  
  29.              @Override  
  30.              public void onClick(DialogInterface dialog, int which) {  
  31.                   // 根據實際情況編寫相應代碼。  
  32.              }  
  33.         });  
  34.         //為“查看詳情”按鈕注冊監聽事件  
  35.         dialog.setNeutralButton("查看詳情", new DialogInterface.OnClickListener() {  
  36.              @Override  
  37.              public void onClick(DialogInterface dialog, int which) {  
  38.                  // 根據實際情況編寫相應代碼。  
  39.              }  
  40.         });  
  41.         dialog.create();  
  42.         dialog.show();  
  43.     }  
  44. }  



  2、運行,顯示界面:

  \

 

三、帶有單選按鈕、類似ListView的AlertDialog對話框

  setSingleChoiceItems(CharSequence[] items, int checkedItem,final OnClickListener listener)方法來實現類似ListView的AlertDialog,第一個參數是要顯示的數據的數組,第二個參數指定默認選中項,第三個參數設置監聽處理事件。

  1、打開“src/com.genwoxue.alertdialog_c/MainActivity.java”文件。

  然後輸入以下代碼:

[java] view plain copy  
  1. package com.genwoxue.alertdialog_c;  
  2.   
  3. import android.app.Activity;  
  4. import android.app.AlertDialog;  
  5. import android.app.Dialog;  
  6. import android.content.DialogInterface;  
  7. import android.os.Bundle;  
  8. import android.widget.Toast;  
  9.   
  10. public class MainActivity extends Activity {  
  11.     //聲明選中項變量  
  12.     private int selectedCityIndex = 0;  
  13.        
  14.      @Override  
  15.      public void onCreate(Bundle savedInstanceState) {  
  16.        super.onCreate(savedInstanceState);  
  17.        setContentView(R.layout.activity_main);  
  18.        //定義城市數組  
  19.        final String[] arrayCity = new String[] { "杭州", "紐約", "威尼斯", "北海道" };  
  20.   
  21.        //實例化AlertDialog對話框  
  22.        Dialog alertDialog = new AlertDialog.Builder(this)  
  23.          .setTitle("你最喜歡哪個地方?")                        //設置標題  
  24.          .setIcon(R.drawable.ic_launcher)                //設置圖標  
  25.          //設置對話框顯示一個單選List,指定默認選中項,同時設置監聽事件處理  
  26.          .setSingleChoiceItems(arrayCity, 0, new DialogInterface.OnClickListener() {  
  27.        
  28.            @Override  
  29.            public void onClick(DialogInterface dialog, int which) {  
  30.                selectedCityIndex = which;               //選中項的索引保存到選中項變量  
  31.            }  
  32.          })  
  33.          //添加取消按鈕並增加監聽處理  
  34.         .setNegativeButton("取消", new DialogInterface.OnClickListener() {  
  35.              @Override  
  36.              public void onClick(DialogInterface dialog, int which) {  
  37.                 // TODO Auto-generated method stub  
  38.              }  
  39.           })  
  40.         //添加確定按鈕並增加監聽處理  
  41.         .setPositiveButton("確認", new DialogInterface.OnClickListener() {  
  42.              @Override  
  43.              public void onClick(DialogInterface dialog, int which) {  
  44.              Toast.makeText(getApplication(), arrayCity[selectedCityIndex], Toast.LENGTH_SHORT).show();  
  45.              }  
  46.           })  
  47.         .create();  
  48.        alertDialog.show();  
  49.      }  
  50. }  



  2、運行,顯示界面:

  \

 

四、帶有復選框、類似ListView的AlertDialog對話框

  setMultiChoiceItems(CharSequence[] items, boolearn[] checkedItems,final OnMultiChoiceClickListener listener)方法來實現類似ListView的AlertDialog,第一個參數是要顯示的數據的數組,第二個參數指定默認選中項,第在個參數設置監聽處理事件。

  1、打開“src/com.genwoxue.alertdialog_d/MainActivity.java”文件。

  然後輸入以下代碼:

[java] view plain copy  
  1. package com.genwoxue.alertdialog_d;  
  2.   
  3. import android.app.Activity;  
  4. import android.app.AlertDialog;  
  5. import android.app.Dialog;  
  6. import android.content.DialogInterface;  
  7. import android.os.Bundle;  
  8. import android.widget.Toast;  
  9.   
  10.   
  11. public class MainActivity extends Activity {  
  12.   
  13.     @Override  
  14.     public void onCreate(Bundle savedInstanceState) {  
  15.     super.onCreate(savedInstanceState);  
  16.     setContentView(R.layout.activity_main);  
  17.     //定義運動數組  
  18.     final String[] arraySport = new String[] { "足球", "籃球", "網球", "乒乓球" };  
  19.     final boolean[] arraySportSelected = new boolean[] {false, false, false, false};  
  20.       
  21.     //實例化AlertDialog對話框  
  22.     Dialog alertDialog = new AlertDialog.Builder(this)  
  23.        .setTitle("你喜歡哪些運動?")                        //設置標題  
  24.        .setIcon(R.drawable.ic_launcher)               //設置圖標  
  25.        //設置對話框顯示一個復選List,指定默認選中項,同時設置監聽事件處理  
  26.        .setMultiChoiceItems(arraySport, arraySportSelected, new DialogInterface.OnMultiChoiceClickListener() {  
  27.            
  28.            @Override  
  29.            public void onClick(DialogInterface dialog, int which, boolean isChecked) {  
  30.                arraySportSelected[which] = isChecked;              //選中項的布爾真假保存到選中項變量  
  31.            }  
  32.        })  
  33.        //添加取消按鈕並增加監聽處理       
  34.        .setPositiveButton("確認", new DialogInterface.OnClickListener() {  
  35.   
  36.            @Override  
  37.            public void onClick(DialogInterface dialog, int which) {  
  38.               StringBuilder stringBuilder = new StringBuilder();  
  39.               for (int i = 0; i < arraySportSelected.length; i++) {  
  40.               if (arraySportSelected[i] == true){  
  41.                   stringBuilder.append(arraySport[i] + "、");  
  42.               }  
  43.            }                
  44.            Toast.makeText(getApplication(), stringBuilder.toString(), Toast.LENGTH_SHORT).show();  
  45.          }  
  46.         })  
  47.          
  48.         //添加確定按鈕並增加監聽處理       
  49.        .setNegativeButton("取消", new DialogInterface.OnClickListener() {  
  50.   
  51.            @Override  
  52.            public void onClick(DialogInterface dialog, int which) {  
  53.                // TODO Auto-generated method stub  
  54.            }  
  55.         })        
  56.        .create();  
  57.       
  58.      alertDialog.show();  
  59.      }  
  60. }  

  2、運行,顯示界面:

  \

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved