2012-12-18 7 views
27

I stworzył AlertDialog:Android AlertDialog setOnDismissListener dla API niższy niż 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();` 

przez rachunek "new Boolean[] { false, true, false false false false, true }" elementy w oknie dialogowym zostaną sprawdzone/zaznaczona domyślnie.

Po otwarciu okna dialogowego, zmianie wyboru pozycji, a następnie ich zwolnieniu (naciśnięcie przycisku anulowania lub przycisku wstecz urządzenia) powoduje odrzucenie okna dialogowego. Jak na razie dobrze.

Ale po ponownym otwarciu okna, elementy mają zaznaczony/niezaznaczony stan poprzednich zmian od ostatniego otwarcia okna dialogowego.

Ale kiedy okno dialogowe zostało zwolnione przy pierwszym otwarciu, chcę mieć zaznaczone/odznaczone elementy jak po utworzeniu okna dialogowego (new Boolean[] { false, true, false false false false, true }).

Po prostu potrzebuję okazji, aby otrzymać powiadomienie, gdy okno dialogowe zostanie usunięte, a następnie mogę zresetować stan elementów.

Próbowałem go z setOnDismissListener dla obiektu okna dialogowego. Niestety to jest tylko dostępna w API 17.

setOnDismissListener pracował dla mnie idealny (dokładnie to, czego potrzebuję) w emulatorze (API 17), ale nie na urządzeniu (Android 4.1 => API 16)

Czy istnieje coś podobnego w API 16?

+0

[setOnDismissListener] (http://developer.android.com/reference/android/app/Dialog.html#setOnDismissListener % 28android.content.DialogInterface.OnDismissListener% 29) jest obecny na poziomie Api 1 – nandeesh

+1

hmm dziękuję za odpowiedź. Ale nawet Eclipse skarży się, że SetOnDismissListener jest tylko dla API17 i daje mi ostrzeżenie na Mogę stłumić ostrzeżenie, ale potem aplikacja ulega awarii na moim urządzeniu ... Eclipse mówi mi również, że setOnDismissListener został dodany w API17 – Eudaimonie

Odpowiedz

78

Problem polega na tym, że używasz setOnDismissListener z AlertDialog.Builder. Ten wprowadzono poziomu Api 17 setOnDismissListener samego AlertDialog jest od poziomu api 1.

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

To nie działa dla mnie: http://stackoverflow.com/questions/14520597/android-illegalstateexception-you-can -not-set-dialogs-on-a-prelendlistener-lub-on – Ralphleon

+2

Ty, panie, potrzebujesz więcej medali. – Melllvar

+0

Tak, to działa –

Powiązane problemy