这可能是个老问题。但我仍然找不到满意的答案。 AlertDialog,AlertDialog.builder,Android中的Dialog有什么区别。我应该使用哪一个?
答案 0 :(得分:0)
引用this,
Dialog 类是对话框的基类,但您应该避免直接实例化Dialog。而是使用以下子类之一:
AlertDialog 可让您在活动/片段上方显示一个对话框。它通常用于提示用户进行交互,包括几个按钮或通知某事。 Dialog 类是此类的超类。
AlertDialog.Builder 是 AlertDialog 的内部静态类,它允许您使用方便的方法快速设置对话框
AlertDialog.Builder(Context context)
- >
为使用默认警报对话框主题的警报对话框创建构建器。
默认警报对话框主题由父上下文主题中的alertDialogTheme定义。
AlertDialog.Builder(Context context, int themeResId)
- >为使用显式主题资源的警报对话框创建构建器。
指定的主题资源(themeResId
)应用于 top 父上下文的主题。它可以被指定为包含完全填充主题的样式资源,例如Theme_Material_Dialog
,以替换父上下文主题中的所有属性,包括主色和强调色。
要保留主色和强调色等属性,可以将themeResId
指定为叠加主题,例如ThemeOverlay_Material_Dialog
。这将仅覆盖将警报窗口设置为对话框所需的窗口属性。
注意强>
AlertDialog 类允许您构建各种对话框设计,并且经常是您需要的唯一对话框类。警报对话框标题,内容区域和操作按钮有三个区域。
AlertDialog.Builder 类提供的API允许您使用上述类型的内容创建 AlertDialog ,包括自定义布局。
用这个例子理解概念
// 1. Instantiate an AlertDialog.Builder with its constructor
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
// 2. Chain together various setter methods to set the dialog requirements
builder.setMessage(R.string.dialog_message)
.setTitle(R.string.dialog_title);
// 3. Get the AlertDialog from create()
AlertDialog dialog = builder.create();
Dialog 是 AlertDialog (子类)的超类, AlertDialog.Builder 是 AlertDialog
的内部静态类答案 1 :(得分:0)
阅读android官方Dialogs指南。