【问题标题】:Android dialog setNegativeButton without listener没有监听器的Android对话框setNegativeButton
【发布时间】:2016-04-14 11:02:46
【问题描述】:

这里有好奇心问题。

我使用了很多对话框构建器,大多数时候我的否定取消按钮除了关闭对话框之外什么都不做。我在网上到处找到的代码是这样的:

builder.setNegativeButton(
    "cancel",
    new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();
        }
    }
);

我碰巧发现这段代码完全一样:

builder.setNegativeButton("cancel", null);

所以我的问题是:不手动关闭对话框是一个坏习惯吗?如果是,为什么?

【问题讨论】:

  • 你是怎么发现的?我没有在文档中找到它。
  • 我刚试过。这是因为我没有在我在这里询问的文档中找到它。

标签: android android-dialog


【解决方案1】:

我自己在学校的 Android 课程中学到了这一点。基本上,如果您需要额外的功能,您只需要实现按钮侦听器。

所以包含点击监听器不是“习惯”,它只是明确的意图。

【讨论】:

  • 那应该在文档中。谢谢回答
  • 如果它不在文档中,我不会相信它。它可以在没有警告的情况下更改,您的用户会看到崩溃的应用程序。
  • @zmbq - 为什么 Android API 中的 null 检查会发生变化?如果有的话,他们应该添加更多,而不是删除任何。文档声明要为该参数放置一个侦听器的实例。如果您不想让一个为空,则暗示它。
  • 作为参考,设置 null 也会删除点击监听器。进一步证明 null 不是问题。 stackoverflow.com/a/5195379/2308683
【解决方案2】:

这是一些记录在案的行为,请参阅:
http://developer.android.com/guide/topics/ui/dialogs.html#DismissingADialog

当用户触摸使用 AlertDialog.Builder 创建的任何操作按钮时,系统会为您关闭对话框。

因此,使用 null 侦听器,您可以练习 Dialog 的这种隐含记录的行为。

可能会出什么问题? (是的,我认为至少有 50% 的可能性是某些自定义 ROM 无法正常运行……再说一次,谁在乎自定义 ROM 未能遵循记录的行为,我不再是那个 BS )。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-06
    • 2021-07-22
    • 1970-01-01
    相关资源
    最近更新 更多