Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 高級開發 >> AlertDialog.Builder()的應用及擴展

AlertDialog.Builder()的應用及擴展

編輯:高級開發

那我們先了解什麼是AlertDialog?什麼是AlertDialog.Builder?且兩者有什麼區別?

  AlertDialog是Dialog的一個直接子類,AlertDialog也是android系統當中最常用的對話框之一。

  一個AlertDialog可以有兩個以上的Button,可以對一個AlertDialog設置相應的信息。比如title,massage,setSingleChoiceItems,setPositiveButton,setNegativeButton等等。。。。

  但不能直接通過AlertDialog的構造函數來生產一個AlertDialog。研究AlertDialog的源碼發現AlertDialog所有的構造方法都是寫保護的所以不能通過:AlertDialog alertDialog = new AlertDialog();來得到。AlertDialog構造方法源碼如下:

  Java代碼 收藏代碼

  protected AlertDialog(Context context) {

  this(context, com.android.internal.R.style.Theme_Dialog_Alert);

  }

  protected AlertDialog(Context context, int theme) {

  super(context, theme);

  mAlert = new AlertController(context, this, getWindow());

  }

  protected AlertDialog(Context context, boolean cancelable, OnCancelListener cancelListener) {

  super(context, com.android.internal.R.style.Theme_Dialog_Alert);

  setCancelable(cancelable);

  setOnCancelListener(cancelListener);

  mAlert = new AlertController(context, this, getWindow());

  }

  只能通過:

  Java代碼 收藏代碼

  AlertDialog.Builder alertDialog =new AlertDialog.Builder(this);

  來得到。

  那就通過一個具體的實例來說說吧(這裡用一個最常用的對話框為例):

  Java代碼 收藏代碼

  package com.oyah;

  import android.app.Activity;

  import android.app.AlertDialog;

  import android.content.DialogInterface;

  import android.os.Bundle;

  public class TestsActivity extends Activity {

  public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentVIEw(R.layout.main);

  AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);

  接上頁

  alertDialog

  .setTitle("title")

  .setMessage("message")

  .setPositiveButton("okBuuon",

  new DialogInterface.OnClickListener() {

  @Override

  public void onClick(DialogInterface dialog,

  int which) {

  }

  })

  .setNegativeButton("exitButton",

  new DialogInterface.OnClickListener() {

  @Override

  public void onClick(DialogInterface dialog,

  int which) {

  }

  }).[b]setCancelable(false).[/b]create().show();

  }

  }

  針對AlertDialog中設置了確定和取消按鈕,一般來說確定為執行某個動作,取消就是不執行,但是如果用戶點擊了系統的Back鍵,此時就會將AlertDialog關閉,而並沒有執行預期的取消的操作。

  此時需要關注一個方法setCancelable(false) 該方法定義設置該AlertDialog是否可以被Back鍵取消,如果不設置默認為true

  下面是一些擴展:

  根據AlertDialog.Builder 創建 相應的 AlertDialog

  Java代碼 收藏代碼

  AlertDialog alertDialogs = alertDialog.create();

  用dismiss();方法來清除創建過的AlertDialog

  Java代碼 收藏代碼

  alertDialogs.dismiss();

  以上所采用的都是AlertDialog 系統默認的布局 現在說自定義布局的情況 並添加一個用於取消AlertDialog 的 Button

  定義其布局 main.XML

  XML代碼 收藏代碼

  < ?XML version="1.0" encoding="utf-8"?>

  < LinearLayout XMLns:android="http://schemas.android.com/apk/res/android"

  android:orIEntation="horizontal"

  android:layout_width="fill_parent"

  android:layout_height="fill_parent"

  android:padding="10dp"

  >

  < LinearLayout

  android:orIEntation="vertical"

  android:layout_width="wrap_content"

  android:layout_height="wrap_content"

  >

  < /LinearLayout>

  < /LinearLayout>

  接上頁

  通過LayoutInflater 得到上面 main.XML 布局文件

  Java代碼 收藏代碼

  vIEw = this.getLayoutInflater().inflate(R.layout.main, null);

  指定AlertDialog.Builder 所需的布局 並返回目標AlertDialog

  Java代碼 收藏代碼

  alertDialog.setView(vIEw);

  alertDialogs= alertDialog.create();

  通過 view.findViewById() 得到 目標VIEw 然後設置其內容 如:

  Java代碼 收藏代碼

  TextView title = (TextView) view.findVIEwById(R.id.title);

  title.setTextSize(20);

  title.setTextColor(Color.RED);

  title.setText("Title");

  TextView message = (TextView) view.findVIEwById(R.id.message);

  message.setText("message");

  顯示對話框 AlertDialog

  Java代碼 收藏代碼

  findVIEwById(R.id.button).setOnClickListener(new OnClickListener(){

  public void onClick(VIEw v) {

  // TODO Auto-generated method stub

  alertDialogs.show();

  }

  });

  清除對話框 AlertDialog

  Java代碼 收藏代碼

  vIEw.setOnClickListener(new OnClickListener(){

  public void onClick(VIEw v) {

  // TODO Auto-generated method stub

  alertDialogs.dismiss();

  }

  });

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