对于android 开发来说, AlertDialog 是一个经常用到得小组件。
今天用AlertDialog 做了一个小对话框。 所以就顺便总结一下AlertDialog 的用法。
一 AlertDialog 与AlertDialog.Builder
如果看过AlertDialog.java 的源码,可以看到AlertDialog 的构造函数是protected.
protected AlertDialog(Context context, boolean cancelable, OnCancelListener cancelListener) {
this(context, 0);
setCancelable(cancelable);
setOnCancelListener(cancelListener);
}
所以AlertDialog 是不可以直接创建对象的,所以要借助AlertDialog 的静态内部类AlertDialog.Builder 来创建AlertDialog 对象。
二 创建AlertDialog
创建AlertDialog 首先要建立AlertDialog.Builder 。
public Builder(Context context) {
this(context, resolveDialogTheme(context, 0));
}
然后利用build给AlertDialog 添加各项内容。
public Builder setTitle(@StringRes int titleId) { //添加标题
P.mTitle = P.mContext.getText(titleId);
return this;
}
public Builder setMessage(CharSequence message) { // 添加内容
P.mMessage = message;
return this;
}
public Builder setIcon(Drawable icon) { // 添加图标
P.mIcon = icon;
return this;
}
public Builder setPositiveButton(@StringRes int textId, final OnClickListener listener) {
P.mPositiveButtonText = P.mContext.getText(textId);
P.mPositiveButtonListener = listener;
return this;
}
public Builder setNegativeButton(@StringRes int textId, final OnClickListener listener);
public Builder setNegativeButton(CharSequence text, final OnClickListener listener);
调用Build.creat()方法去创建 AlertDialog 。
AlertDialog dialog = builder.create();
三 实例代码
public void ShowAlerDialog() {
final AlertDialog.Builder builder = new AlertDialog.Builder(mPhone.getContext());
builder.setMessage(Resources.getSystem().
getText(com.android.internal.R.string.Message.toString());
builder.setTitle(Resources.getSystem().
getText(com.android.internal.R.string.title).toString());
builder.setPositiveButton(com.android.internal.R.string.no, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
......
}
});
builder.setNegativeButton(com.android.internal.R.string.yes, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
......
}
});
......
}