【问题标题】:Why does AlertDialog.Builder not have setOnDismissListener or setOnShowListener methods?为什么 AlertDialog.Builder 没有 setOnDismissListener 或 setOnShowListener 方法?
【发布时间】:2015-12-01 21:39:58
【问题描述】:

我想使用 AlertDialog.Builder 的流畅界面,但是当我要添加 DismissListener 和 ShowListener 时,我必须在构建器上执行 create() 后将其添加到对话框对象中。有谁知道他们为什么不在那儿?我不能扩展它,因为私人 P 成员......这不是世界末日或任何东西,我只是好奇为什么它不存在。

【问题讨论】:

    标签: android android-alertdialog


    【解决方案1】:

    你试过这个方法吗..

    AlertDialog dlg = builder.create();
    lg.setOnDismissListener(new DialogInterface.OnDismissListener() {
    @Override
    public void onDismiss(final DialogInterface dialog) {
    //Do some work
    }
    });
    return dlg;
    

    【讨论】:

    • 是的,我提到我在 .create() 调用之后进行添加。我宁愿能够这样做:new AlertDialog.Builder(ctx).setTitle(title).setMessage( msg) .setPositiveButton(buttonTitle, listener).setDismissListener(dismissListener).show()
    • @danb 您在 create() 调用之后执行此操作,但在 Builder 对象上执行此操作?那是行不通的。 create() 是 Builder 为您提供 AlertDialog 的方式,但 Builder 对象本身并没有任何方法可以在其上设置侦听器。
    • 构建器有几种设置监听器的方法,只是我没有提到的两个。它有 setOnCancelListener、setOnItemSelectedListener 和 setOnKeyListener.. 我只是好奇为什么 api 看起来不完整。
    • public AlertDialog.Builder setOnDismissListener (DialogInterface.OnDismissListener onDismissListener) 在 API 级别 17 中添加
    【解决方案2】:

    从 API 级别 17 开始。您可以使用 setOnDismissListener (DialogInterface.OnDismissListener onDismissListener) 方法

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-16
      • 2015-05-01
      • 2014-03-07
      • 2011-06-12
      • 2013-01-18
      相关资源
      最近更新 更多