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で試してみました。残念ながら、これはAPI17でのみ利用可能です。
setOnDismissListenerは、エミュレーター(API 17)では完全に機能しましたが(Android 4.1 => API 16)、デバイスでは機能しませんでした。
API 16に似たようなものはありますか?