編輯:高級開發
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();
}
});
在android SDK系統中已經沒有了JDK,自然也無法運行JUnit,但是這並不能阻止我們利用JUnit來編寫單元測試,下面的文章進行詳細說明下android SD
Google於2007年底正式發布了android SDK, 作為 android系統的重要特性,Dalvik虛擬機也第一次進入了人們的視野。它對內存的高效使用,和在低
android手機操作系統基本特征包括內部集成浏覽器 該浏覽器基於開源的WebKit 引擎,優化的圖形庫 包括2D和3D圖形庫,3D圖形庫基於OpenGL ES 1.0
谷歌是為了服務而服務的,既然這樣的話,那還不如去支持iPhone呢,至少能在軟件商店裡多賣一點錢,而且喬布斯看上去也更酷一點,這樣android浏覽器在浏覽器內的名聲將