警告提示(AlertDialog)

AlertDialog 就是警告提示,通常用在訊息的提示,比如說離開程序前,進行動作前等等,通常都會搭配按鈕讓使用者選擇,可以把它當作進階版的 Toast 視窗來使用,基本建構子如下,第1個參數為 context

ps: 參數context,必須是activity的context,不可為getApplicationContext()的Context,否則會出現
android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application...的例外



AlertDialog ad = new AlertDialog.Builder(this).create();

API 11還有4種話框主題可以選擇,使用建構子的第2個參數來指定主題,另外第2個參數也可以使用 xml 來指定,ex: R.layout.xxx

        AlertDialog ad = new AlertDialog.Builder(this,AlertDialog.THEME_DEVICE_DEFAULT_DARK).create();
        AlertDialog ad = new AlertDialog.Builder(this,AlertDialog.THEME_DEVICE_DEFAULT_LIGHT).create();
        AlertDialog ad = new AlertDialog.Builder(this,AlertDialog.THEME_HOLO_DARK).create();
        AlertDialog ad = new AlertDialog.Builder(this,AlertDialog.THEME_HOLO_LIGHT).create();
        AlertDialog ad = new AlertDialog.Builder(this,AlertDialog.THEME_TRADITIONAL).create();

其他較常用方法如下

        ad.setTitle("標題");//設定警告標題
        ad.setMessage("訊息");//設定警告內容
        ad.setButton("按鈕1", new DialogInterface.OnClickListener() {//設定按鈕1
            
            @Override
            public void onClick(DialogInterface dialog, int which) {
                
                //點選按鈕1後執行的動作
            }
        });
        ad.setButton2("按鈕2", new DialogInterface.OnClickListener() {//設定按鈕2
            
            @Override
            public void onClick(DialogInterface dialog, int which) {
                
                //點選按鈕2後執行的動作
            }
        });
        ad.setButton3("按鈕3", new DialogInterface.OnClickListener() {//設定按鈕3
            
            @Override
            public void onClick(DialogInterface dialog, int which) {
                
                //點選按鈕3後執行的動作
            }
        });
        
        ad.setCanceledOnTouchOutside(false);//當警告提示出現後,點選提示以外範圍,是否會取消提示,預設是true
        
        ad.setCancelable(false);//當警告提示出現後,點選其他實體按鈕(backkey等等),是否會取消提示,預設是true
        
        ad.show();//顯示按鈕

結果為


















在版權聲明流程中,點選離開後加入1個警告提示,程式碼如下

   1:  void showAlertDialog(){
   2:   
   3:          AlertDialog ad = new AlertDialog.Builder(this).create();
   4:          
   5:          ad.setTitle("警告");//設定警告標題
   6:          ad.setMessage("確定離開??");//設定警告內容
   7:          ad.setButton("確定", new DialogInterface.OnClickListener() {//設定按鈕1
   8:              
   9:              @Override
  10:              public void onClick(DialogInterface dialog, int which) {
  11:                  
  12:                  //點選按鈕1後執行的動作
  13:                  //檢查網路狀態
  14:                  ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
  15:   
  16:                  NetworkInfo ni = cm.getActiveNetworkInfo();
  17:                  if (ni != null && ni.isConnected()) {//若有網路先連結到外部網頁
  18:   
  19:                      Uri uri = Uri.parse("http://vulpesadn.blogspot.tw/");
  20:                      Intent intent = new Intent(Intent.ACTION_VIEW, uri);
  21:                      startActivity(intent);
  22:   
  23:                      finish();//再結束程序
  24:                  } else if (ni == null) {//沒有網路
  25:   
  26:                      finish();//結束程式
  27:                  }
  28:              }
  29:          });
  30:          ad.setButton2("取消", new DialogInterface.OnClickListener() {//設定按鈕2
  31:              
  32:              @Override
  33:              public void onClick(DialogInterface dialog, int which) {
  34:                  
  35:                  //點選按鈕2後執行的動作
  36:                  //無動作
  37:              }
  38:          });
  39:          
  40:          ad.setCanceledOnTouchOutside(false);//當警告提示出現後,點選提示以外範圍,是否會取消提示,預設是true
  41:          
  42:          ad.setCancelable(false);//當警告提示出現後,點選其他實體按鈕(backkey等等),是否會取消提示,預設是true
  43:          
  44:          ad.show();//顯示按鈕
  45:      }


結果為




1 意見:

Pawan 提到...

very nice tutorial you can also check this one at
alert box with different theming

張貼留言

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Affiliate Network Reviews