2012-10-03 11 views
6

मेरे पास एक दृश्य में कई विजेट हैं, प्रत्येक को अपना स्वयं का एक्शनमोड चाहिए। मैं देखता हूं कि जब उपयोगकर्ता एक्शन बार के बाहर टैप करता है तो एक्शनमोड स्वचालित रूप से खारिज नहीं होता है। इस प्रकार, उपयोगकर्ता के लिए एक नियंत्रण के लिए एक्शनमोड शुरू करना आसानी से संभव है, फिर पहले (शीर्ष पर मेरे मामले में लांगक्लिक) टैप करें और पहले के शीर्ष पर एक दूसरा एक्शनबार रखें। यह प्रोग्रामिंग तर्क विनाश का कारण बनता है।यह पता लगाने के लिए कि क्या एक्शनमोड पहले से मौजूद है

मैं एक गतिविधि-स्तरीय सदस्य चर के साथ वर्तमान एक्शनमोड का ट्रैक रख सकता हूं और यदि किसी नए की आवश्यकता हो तो वर्तमान को खारिज कर सकते हैं। हाउवेवर, यह मेरे कोड को पढ़ने और बनाए रखने के लिए गन्दा बना रहा है। और आगे, जब मैं एक्शन बार के बाहर कुछ भी टैप करता हूं तो मैं तुरंत इसे खारिज करना पसंद करूंगा।

इसे संभालने के लिए एक अच्छा तरीका पर कोई सुझाव?

उत्तर

6

मैं कुछ समय पहले इस समस्या का समाधान ढूंढ रहा था और जैसा कि मुझे पता है कि आप वैश्विक चर में वर्तमान क्रिया-मोड स्थिति को सहेजे बिना इसे ट्रैक नहीं कर सके। हालांकि मुझे नहीं लगता कि उचित नाम वाला एक चर आपके कोड को गन्दा बना देगा।

+0

ठीक है, लेकिन एकता गड़बड़ है, मान लें कि उपयोगकर्ता एक संपादन टेक्स्ट पर क्लिक करता है जिसे आपने उपclassed नहीं किया है। अब आप अनुचित कार्रवाई बार को कैसे खारिज करते हैं? –

+0

ठीक है, अगर मैं आपको सही समझ गया ... मैंने इसे इस तरह बनाया: ग्लोबल वैरिएबल 'एक्शनमोड एमएमओडी;' लागू किया, इसे 'ऑनक्रेटएक्शनमोड (...)' विधि में वर्तमान एक्शन मोड से भर दिया, और फिर बस 'एमएमोड' .finish() 'जब मुझे वर्तमान एक्शन-मोड – user1049280

+0

से बाहर निकलने की ज़रूरत है, तो मुझे यह मिल जाएगा। लेकिन आप कैसे जानते हैं कि कब खत्म करें()? यही है, उपयोगकर्ता कई क्लिक कर सकते हैं; क्या आप प्रत्येक ऑब्जेक्ट को उपclass करते हैं और MotionEvent.ACTION_DOWN के लिए जांचते हैं और फिर कॉल खत्म() कहते हैं? यह अत्यधिक त्रुटि प्रवण होगा, कोड के इन बिट्स को जगह पर मिर्च किया जाएगा। –

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