[转载]Android AlertDialog.Builder()-Android开发进阶&经验分享-eoe Android开发者社区_Android开发论坛

baacloud免费翻墙vpn注册使用

[转载]Android AlertDialog.Builder()-Android开发进阶&经验分享-eoe Android开发者社区_Android开发论坛.
那我们先了解什么是AlertDialog?什么是AlertDialog.Builder?且两者有什么区别?
AlertDialog是Dialog的一个直接子类,AlertDialog也是Android系统当中最常用的对话框之一。

一个AlertDialog可以有两个以上的Button,可以对一个AlertDialog设置相应的信息。比如 title,massage,setSingleChoiceItems,setPositiveButton,setNegativeButton等 等。
但不能直接通过AlertDialog的构造函数来生产一个AlertDialog。研究AlertDialog的源码发现AlertDialog所 有的构造方法都是写保护的所以不能通过:AlertDialog alertDialog = new AlertDialog();来得到。AlertDialog构造方法源码如下:

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());
}

只能通过:

AlertDialog.Builder alertDialog =new AlertDialog.Builder(this);
来得到。那就通过一个具体的实例来说说吧(这里用一个最常用的对话框为例):



package eoe.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
AlertDialog alertDialogs = alertDialog.create();
//用dismiss();方法来清除创建过的AlertDialog
alertDialogs.dismiss();

以上所采用的都是AlertDialog 系统默认的布局 现在说自定义布局的情况 并添加一个用于取消AlertDialog 的 Button
  定义其布局 main.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>

赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏