2012-12-18 10 views
27

より低い私はAlertDialogを作成:文を通してのAndroid AlertDialog setOnDismissListenerは17

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)に(私が必要正確に何)私のために完璧に働いたではなく、私のデバイス(アンドロイド4.1 => API 16)にだけ使用可能です

ありAPI 16に似た何か?

+0

[setOnDismissListener(http://developer.android.com/reference/android/app/Dialog.html#setOnDismissListenerためされています%28andandroid.content.DialogInterface.OnDismissListener%29)がApiレベル1から存在します – nandeesh

+1

あなたの答えをありがとう。しかし、EclipseでもSetOnDismissListenerがAPI17のためだけであり、という警告が表示されます。 android:minSdkVersion = "16" <===警告 android:targetSdkVersion = "17" /> 警告が表示されますが、デバイス上でアプリがクラッシュします... Eclipseでは、setOnDismissListenerがAPI17で追加されたことも伝えています – Eudaimonie

答えて

78

setOnDismissListenerAlertDialog.Builderを使用しているという問題があります。これは、APIレベル17で導入された、AlertDialog自体のsetOnDismissListenerは、APIレベル1

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

これは私にとってはうまくいきません:http://stackoverflow.com/questions/14520597/android-illegalstateexception-you-can -not-set-dialogs-oncancellistener-or-on – Ralphleon

+2

あなたは、より多くのメダルが必要です。 – Melllvar

+0

これはうまくいきます –

関連する問題