2012-12-18 7 views
27

मैं एक AlertDialog बनाया:एंड्रॉयड 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 के साथ इसे आजमाया। दुर्भाग्य से इस एपीआई में बस उपलब्ध 17.

setOnDismissListener मेरे लिए एकदम सही काम किया (मैं वास्तव में क्या जरूरत है) एमुलेटर (एपीआई 17) (Android 4.1 => एपीआई 16) में, लेकिन मेरे डिवाइस पर नहीं

है है एपीआई 16 में कुछ समान है?

+0

[setOnDismissListener] (http://developer.android.com/reference/android/app/Dialog.html#setOnDismissListener बाद से किया गया % 28android.content.DialogInterface.OnDismissListener% 29) एपी स्तर 1 – nandeesh

+1

हम्म से मौजूद है आपके उत्तर के लिए धन्यवाद। लेकिन फिर भी ग्रहण कि SetOnDismissListener शिकायत कर रहा है API17 के लिए ही है और मुझ पर < Android-SDK का उपयोग करता है एक चेतावनी देता है: minSdkVersion = "16" <=== चेतावनी एंड्रॉयड: targetSdkVersion = "17" /> मैं दबा सकती हैं चेतावनी लेकिन फिर ऐप मेरे डिवाइस पर दुर्घटनाग्रस्त हो जाता है ... ग्रहण मुझे यह भी बताता है कि setOnDismissListener API17 – Eudaimonie

उत्तर

78

समस्या यह है कि आप setOnDismissListenerAlertDialog.Builder का उपयोग कर रहे हैं। इस एपीआई स्तर 17 में शुरू की गई थी, AlertDialog ही की setOnDismissListener एपीआई स्तर 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- – Ralphleon

+2

पर, सर को अधिक पदक की आवश्यकता है। – Melllvar

+0

हाँ यह –

संबंधित मुद्दे