AlertDialog.Builder类有什么意义?

时间:2012-08-27 09:58:49

标签: android dialog alertdialog builder

在Android中,每个对话框都使用Builder显示该对话框类。 Builder是这些类中的静态内部类。那么为什么Builder可以控制构建对话框呢?提前谢谢。

2 个答案:

答案 0 :(得分:4)

它只是一个帮助类,它允许您调用链中的方法并轻松设置正/负按钮。例如:

<强> AlertDialog.Builder

AlertDialog.Builder alert = new AlertDialog.Builder(this)
  .setTitle("this is title")
  .setMessage("this is message")
  .setCancelable(false)
  .setPositiveButton("OK", null);
  alert.show();

<强> AlertDialog

AlertDialog alert2 = new AlertDialog.Builder(this).create();
alert2.setTitle("this is title");
alert2.setMessage("");
alert2.setCancelable(false);
alert2.setButton(AlertDialog.BUTTON_POSITIVE, "OK", new OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        // null 
    }
});
alert2.show();

所以现在你可能会看到以两种不同的方式创建相同内容的难易程度。

答案 1 :(得分:0)

我完全同意waqaslam,但是AlertDialog同时为您提供了更多自定义对话框的方法。就像您可以通过使用

在AlertDialog中轻松应用动画一样
// Create an enter animation(name = enter_anim)
<translate android:fromXDelta="-100%p"
    android:fromYDelta="0%"
    android:duration="1000">

</translate>

//Create an exit animation(name = exit_anim)
<translate
    android:duration="1000"
    android:fromXDelta="0%"
    android:toXDelta="100%p">

</translate>

//Then combine the enter and exit animation by creating a style
<style name="DialogSlide">
    <item name="android:windowEnterAnimation">@anim/enter_anim</item>
    <item name="android:windowExitAnimation">@anim/exit_anim</item>
</style>

//Now creating an AlertDialog
AlertDialog dialog = new AlertDialog.Builder(this).create();
    dialog.setTitle("Alert Dialog");
    dialog.setMessage("Hello! This is an alert dialog");
    dialog.getWindow().getAttributes().windowAnimations=R.style.DialogSlide;
    dialog.show();

///此行将动画附加到Dialog,而在AlertDialog.Builder类中找不到该动画

dialog.getWindow().getAttributes().windowAnimations=R.style.DialogSlide;

因此,通过这种方式,您可以创建任何类型的动画并通过创建样式将其附加到AlertDialog。 但是我认为您很少可以通过使用AlertDialog.Builder类来实现这一目标。 因此,通过使用动画,您可以为用户提供更好的用户体验。