Android AlertDialog setOnDismissListener for API 低于 17

2022-09-01 11:13:50

我创建了一个警报对话框:

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 中是否有类似的东西?


答案 1

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

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

答案 2

推荐