यह API स्तरों 10 और नीचे के लिए है? संवाद हमेशा गतिविधि के हिस्से के रूप में बनाए जाते हैं और प्रदर्शित होते हैं। दूसरा, मुझे नहीं लगता कि आप क्रिएटडिअलॉग पर एक संवाद को रद्द/खारिज कर सकते हैं क्योंकि इसे वास्तव में बनाया नहीं गया है जब क्रिएटडिअलॉग कहा जाता है। यही है, आप कुछ ऐसा नहीं रद्द/अस्वीकार कर सकते हैं जो नहीं बनाया गया है। आप कोशिश कर सकते हैं कि इसके बजाय PrepareDialog() पर ओवरराइड करें और वहां संवाद को रद्द/खारिज करने के लिए अपनी जांच करें। उस बिंदु पर संवाद वास्तव में बनाया जाना चाहिए (केवल प्रदर्शित नहीं किया गया है), इसलिए यदि आप वहां रद्द/खारिज करते हैं तो आप इसे प्रदर्शित होने से रोक पाएंगे।
onPrepareDialog() प्रदर्शित होने वाले संवाद पर किसी प्रकार की जांच और निर्णय लेने के लिए उचित जगह है। यह हनीकॉम से पहले एपीआई के लिए है।
आप एक बाद में एपीआई का उपयोग कर रहे हैं, तो आप DialogFragment बजाय का विस्तार करना चाहिए:
इस एपीआई 11 और बाद के लिए है। इस मामले में मुझे लगता है कि आप DialogFragment कीCreateView() विधि में निर्णय लेने को संभाल सकते हैं जो PrepareDialog() पर समान है।
मुझे आशा है कि आप इस के माध्यम से पढ़ा है: http://developer.android.com/guide/topics/ui/dialogs.html
या इस, अपने एपीआई के आधार पर:
http://developer.android.com/reference/android/app/DialogFragment.html
कुल मिलाकर, शायद एक क्लीनर समाधान बटन या तंत्र निष्क्रिय करने के लिए है कि संवाद को पहली जगह में दिखाने का कारण बनता है? यही है, आपको कोड लिखना है कि Dialog.show() को केवल तभी बुलाया जाता है जब इसे वास्तव में बुलाया जाना चाहिए। मुझे वास्तव में क्या करना है, इसके बारे में अधिक जानकारी जाननी होगी। उदाहरण के लिए, आप संवाद कहते हैं।एक बटन के onClickListener से() दिखाएं। आप वास्तव में उपयोगकर्ता को बटन दबाए नहीं चाहते हैं, एक संवाद की उम्मीद करते हैं, लेकिन ऐसा कुछ कारणों से नहीं दिखता है जब उपयोगकर्ता समझ में नहीं आता है। एक बेहतर समाधान बटन को सभी को एक साथ अक्षम करना होगा ताकि उपयोगकर्ता के लिए यह स्पष्ट हो कि यह फ़ंक्शन एप्लिकेशन में किसी अन्य चीज़ के कारण उपलब्ध नहीं है।
स्रोत
2012-07-31 16:26:04
क्या आप अपने ऑनक्रेट() विधि में super.onCreate() को कॉल कर रहे हैं ?? – RaphMclee
आप किस एपीआई स्तर के लिए इसे लिख रहे हैं? –