2010-09-20 22 views
89

में ईवेंट-हैंडलिंग विधि से लौटा बूलियन मान का अर्थ क्या है, एंड्रॉइड में, अधिकांश ईवेंट श्रोता विधियां एक बूलियन मान लौटाती हैं। यह सच/झूठा मूल्य क्या है? इसके बाद की घटनाओं के परिणामस्वरूप क्या होगा?Android

class MyTouchListener implements OnTouchListener { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     logView.showEvent(event); 
     return true; 
    } 
} 

ऊपर के उदाहरण के लिए के बारे में, अगर वापसी onTouch विधि में सच है, मैं हर स्पर्श घटना (नीचे, उत्तर प्रदेश, चाल, आदि) पाया मेरी logView के अनुसार कब्जा कर लिया गया है। इसके विपरीत, अगर झूठी वापसी, तो नीचे की घटना पर कब्जा कर लिया गया। तो ऐसा लगता है कि झूठी वापसी घटना को प्रचारित करने से रोकती है। क्या मैं सही हूँ ?

इसके अलावा, ऑनजेस्टर लिस्टनर में, कई विधियों को भी एक बूलियन मान वापस करना होगा। क्या उनका वही अर्थ है?

उत्तर

116

यदि आप ACTION_DOWN ईवेंट से true वापस लौटते हैं तो आप उस इशारे में शेष घटनाओं में रूचि रखते हैं। इस मामले में एक "इशारा" का अर्थ है सभी घटनाओं को अंतिम ACTION_UP या ACTION_CANCEL तक। से false लौटने का अर्थ है कि आप नहीं चाहते हैं कि ईवेंट और अन्य विचारों को इसे संभालने का अवसर मिले। यदि आपके पास ओवरलैपिंग दृश्य हैं तो यह एक भाई दृश्य हो सकता है। यदि नहीं, तो यह माता-पिता को बुलबुला करेगा।

+3

एडैम्प, घटनाओं को प्राप्त करने और घटनाओं को जारी रखने का कोई तरीका है? – ticofab

+0

@ticofab no, वर्तमान में घटनाओं को प्राप्त करने वाले दृश्य का केवल एक अभिभावक इशारा में भविष्य की घटनाओं को रोक सकता है। (बेशक, आप हमेशा अपने स्वयं के रीडायरेक्ट सिस्टम को मूल दृश्य में बना सकते हैं, लेकिन जब तक आप वास्तव में नहीं जानते कि आप क्या कर रहे हैं, तो मैं इसकी अनुशंसा नहीं करता।:)) – adamp

+0

@adamp मैं इस कारण के बारे में नहीं सोच सकता कि क्यों सही पर लौटने पर टच को 2 बार बुलाया जाता है और केवल 1 बार जब मैं झूठी वापसी करता हूं। –

11

बूलियन मान निर्धारित करता है कि घटना का उपभोग किया गया है या नहीं।

हाँ आप सही हैं। यदि आप झूठी वापसी करते हैं, तो अगला श्रोता ईवेंट को संभालता है। यदि यह सच हो जाता है, तो ईवेंट आपके श्रोता द्वारा खाया जाता है और अगली विधि पर नहीं भेजा जाता है।

+2

यह गलत है। 'सत्य' का अर्थ है कि आपने घटना का उपभोग किया है और बाकी घटनाओं को इशारा करते हैं - अन्य श्रोताओं/विचारों को घटनाएं नहीं मिलेंगी। 'झूठा' का मतलब किसी और को घटना को संभालने देना है। यह वास्तव में उससे थोड़ा अधिक विशिष्ट है; मेरा जवाब देखें – adamp

+0

यह वही नहीं है जो मैंने कहा था? – Falmarri

+0

आपने जो कहा वह उलट है। :) – adamp

17

प्रलेखन से: http://developer.android.com/reference/android/view/View.OnTouchListener.html#onTouch(android.view.View, android.view.MotionEvent)

"ट्रू श्रोता घटना, झूठी अन्यथा उपयोग किए गए हैं।"

यदि आप सच लौटते हैं, तो ईवेंट संसाधित हो जाता है। यदि गलत है, तो यह अगले परत पर जाएगा।

1

मैं समस्या निवारण में लगभग एक दिन खो गया, फिर भी मुझे पता चला कि मेरे ऑन टच फ़ंक्शन को वास्तविकता का उपयोग करते समय 2 बार कहा जाता है और झूठी उपयोग करते समय 1 बार कहा जाता है।

+0

क्या आप कारण खोज सकते हैं? –

+0

'event.getAction()' की जांच करें क्योंकि यदि आप ACTION_DOWN ईवेंट पर 'false' वापस करते हैं, तो ACTION_UP ईवेंट श्रोता द्वारा अनदेखा किया जाता है – doodeec

0

से Android-document:

ध्यान दें: Android वर्ग परिभाषा दूसरे से ईवेंट हैंडलर्स पहले और उसके बाद उपयुक्त डिफ़ॉल्ट हैंडलर कॉल करेंगे। इस प्रकार, इन घटनाओं से सच लौटने वाले श्रोताओं को घटना के प्रसार को अन्य घटना श्रोताओं को रोक दिया जाएगा और दृश्य में डिफ़ॉल्ट ईवेंट हैंडलर को कॉलबैक भी अवरुद्ध कर देगा। तो सुनिश्चित करें कि जब आप सत्य लौटते हैं तो आप ईवेंट को समाप्त करना चाहते हैं।