【问题标题】:Android AlertDialog setOnDismissListener for API lower than 17低于 17 的 API 的 Android AlertDialog setOnDismissListener
【发布时间】:2012-12-05 15:58:21
【问题描述】:

我创建了一个 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 中有类似的东西吗?

【问题讨论】:

  • setOnDismissListener 存在于 Api 级别 1
  • 嗯谢谢你的回答。但即使是 Eclipse 也抱怨 SetOnDismissListener 仅适用于 API17 并在 处给我一个警告我可以抑制警告,但随后应用程序在我的设备上崩溃...Eclipse 还告诉我在 API17 中添加了 setOnDismissListener

标签: java android dialog


【解决方案1】:

问题是您使用的是setOnDismissListenerAlertDialog.Builder。这是在 API 级别 17 中引入的,AlertDialogsetOnDismissListener 本身是从 API 级别 1 开始的。

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-08
  • 2013-12-24
  • 2014-06-19
  • 2017-06-01
  • 2019-03-28
  • 2014-05-09
  • 2013-01-07
相关资源
最近更新 更多