java - 低于 17 的 API 的 Android AlertDialog setOnDismissListener

标签 java android dialog

我创建了一个 AlertDialog:

private CharSequence[] _items = { "item1", "item2", "item3", "item4",
"item5", "item6", "item7" };

AlertDialog.Builder daysBuilder = new AlertDialog.Builder(this);
    daysBuilder.setTitle("SomeCaption");

    daysBuilder.setMultiChoiceItems(_items,new Boolean[] { false, true, false, 
false false false, true }, SetListener);
    daysBuilder.setPositiveButton("OK", OKListener);
    daysBuilder.setNegativeButton("Cancel", CancelListener);

    AlertDialog alert = daysBuilder.create();
    alert.show();`

通过语句“new Boolean[] { false, true, false false false false, true }”项目 在对话框中默认选中/取消选中。

当我打开对话框时,更改项目的选择,然后关闭(通过按取消或设备的后退按钮)对话框被关闭。到目前为止一切顺利。

但是当我重新打开对话框时,这些项目具有自上次打开对话框以来先前更改的选中/未选中状态。

但是当对话框在第一次打开时被关闭时,我希望项目处于选中/未选中状态,就像我创建对话框时一样 (new Boolean[] { false, true, false false false false, true } )。

所以基本上我需要有机会在对话框被解除时收到通知,以便我可以重置项目的状态。

我用对话框对象的 setOnDismissListener 进行了尝试。不幸的是,这仅在 API 17 中可用。

setOnDismissListener 在模拟器 (API 17) 中非常适合我(正是我需要的),但在我的设备上却不适用 (Android 4.1 => API 16)

API 16 中有类似的东西吗?

最佳答案

问题是您正在使用 AlertDialog.BuildersetOnDismissListener。这是在 API 级别 17 中引入的,AlertDialog 本身的 setOnDismissListener 从 API 级别 1 开始。

AlertDialog alert = daysBuilder.create();
alert.setOndismissListener(yourdismisslistener);
alert.show();`

关于java - 低于 17 的 API 的 Android AlertDialog setOnDismissListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13933077/

相关文章:

java - 使用 SwingWorker 的带有 GUI 的倒计时器 - 未正确更新

java - 在 Java 中使用 FUSE 库;尝试复制 hello.c 示例

android - 还有什么我尝试导入 "Unable to resolve target ' android- 出现 8'"错误

python - PyQt:把滚动条放在这

安卓对话框 : Removing title bar

java - 可点击的纹理

java - 用JButton改变颜色,设置for循环终止条件为无限

android - "strace -p pid"给出 "attach: ptrace(PTRACE_ATTACH, ...): Operation not permitted"

Android Dagger 2 - 如何使自定义作用域成为本地单例

dialog - Applescript 中的非阻塞对话框