30

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に似たようなものはありますか?

4

1 に答える 1

87

問題は、を使用していることsetOnDismissListenerですAlertDialog.Builder。これはApiレベル17で導入され、setOnDismissListenerそれAlertDialog自体はapiレベル1から導入されています。

AlertDialog alert = daysBuilder.create();
alert.setOndismissListener(yourdismisslistener);
alert.show();`
于 2012-12-18T15:01:10.453 に答える