2012-01-20 10 views
5

मैं AlertDialog.builder के तरल इंटरफ़ेस का उपयोग करना चाहता हूं, लेकिन जब मैं अपने डिसमिस लिस्टनर और शोलिस्टर को जोड़ने के बिंदु पर जाता हूं तो मुझे ब्रेकर पर अपना निर्माण() बनाने के बाद इसे तोड़ना होगा और इसे डायलॉग ऑब्जेक्ट में जोड़ना होगा। क्या किसी को पता है कि वे वहां क्यों नहीं हैं? मैं निजी पी सदस्य के कारण इसे विस्तारित नहीं कर सकता ... यह दुनिया या कुछ भी नहीं है, मैं सिर्फ उत्सुक हूं कि यह क्यों नहीं है।क्यों AlertDialog.Builder ने सेट नहीं किया हैऑनडिस्मिस लिस्टनर या सेटऑनशो लिस्टनर विधियां?

उत्तर

1

एपीआई स्तर 17 से आप setOnDismissListener (DialogInterface.OnDismissListener onDismissListener) विधि

7

आप इस विधि की कोशिश की है ..

AlertDialog dlg = builder.create(); 
lg.setOnDismissListener(new DialogInterface.OnDismissListener() { 
@Override 
public void onDismiss(final DialogInterface dialog) { 
//Do some work 
} 
}); 
return dlg; 
+1

हाँ, मैं उल्लेख उपयोग कर सकते हैं कि मैं अपने .create() कॉल के बाद जोड़ सकता हूँ .. मैं बस इसके बजाय करने में सक्षम होंगे: नया AlertDialog.builder (ctx) .setTitle (शीर्षक) .setMessage (msg) .setPositiveButton (बटनटाइटल, श्रोता) .setDismissListener (dismissListener) .show() – danb

+1

@danb आप इसे करने के बाद करते हैं बनाएँ() कॉल, लेकिन बिल्डर ऑब्जेक्ट पर? वह काम नहीं करेगा। बनाएँ() यह है कि बिल्डर आपको अलर्टडिअलॉग कैसे देता है, लेकिन बिल्डर ऑब्जेक्ट में श्रोताओं को सेट करने के लिए कोई तरीका नहीं है। – LuxuryMode

+2

बिल्डर के श्रोताओं को स्थापित करने के लिए कई विधियां हैं, केवल दो का उल्लेख नहीं है। यह सेटऑनकैनल लिस्टनर सेट है, सेटऑनटिम चयन किए गए लिस्टनर और सेटऑनके लिस्टनर .. मैं सिर्फ उत्सुक हूं कि एपीआई अधूरा क्यों लगता है। – danb

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