2011-06-30 14 views
7

यहां मेरी समस्या है।एंड्रॉइड हैंडलिंग कुंजी अप ईवेंट जबकि मेनू दृश्यमान है

मैं लंबे समय तक दबाए जाने पर कुछ विशिष्ट कार्य करने के लिए वॉल्यूम डाउन कुंजी को ओवरराइड करता हूं, यह सामान्य रूप से ठीक काम करता है। मैं कुंजी को अवरुद्ध कर सकता हूं और उसके लिए घटनाओं को कुंजी कर सकता हूं।

कुंजी श्रोता घटनाएं विशेष कस्टम घटक में लिखी जाती हैं, न कि गतिविधि में जहां इस घटक का उपयोग किया जाता है।

समस्या उत्पन्न होती है जब मैं वॉल्यूम डाउन कुंजी दबाते समय मेनू बटन दबाता हूं, और जब मेनू दिखाया जाता है, तो मैं इसे रिलीज़ करता हूं, मैं इसकी कुंजी अप ईवेंट को रोक नहीं सकता।

क्या आप समझा सकते हैं कि इसके पीछे क्या कारण है? और अगर इस समस्या को हल किया जा सकता है या नहीं?

धन्यवाद।

उत्तर

5

जब मेनू आपके विंडो फोकस परिवर्तन पर क्लिक किया जाता है। फोकस मेनू दृश्य में आते हैं। इस वजह से केडडाउन() काम नहीं करता है क्योंकि स्क्रीन पर फोकस शीर्ष पर मौजूद दृश्य या गतिविधि पर होगा, तो केडडाउन काम करेगा।

स्क्रीन के फ़ोकस में पता करने के लिए निम्नलिखित कोड का उपयोग

@Override 
    public void onWindowFocusChanged(boolean hasFocus) { 
     // TODO Auto-generated method stub 
     System.out.println("....window focus changed.."); 
     super.onWindowFocusChanged(hasFocus); 
    } 
+0

मैं निर्धारित कर सकते हैं जो स्क्रीन ध्यान केंद्रित है ... यहां तक ​​कि मैं 'this.requestFocus (साथ फोकस बदल गया है)', लेकिन इस सुझाव नहीं है काम ... वॉल्यूम डाउन कुंजी ऐप विशिष्ट व्यवहार के बजाय वॉल्यूम [सिस्टम डिफ़ॉल्ट व्यवहार] को कम करता है। – Prasham

+0

मुझे लगता है कि उसने सही सवाल का जवाब दिया, यही कारण है कि ऐसा क्यों होता है, इसे हल करने का तरीका नहीं। यदि मेनू सिस्टम पर नियंत्रण और फोकस है तो आपकी गतिविधि को मुख्य इनपुट प्राप्त नहीं होंगे। – Idistic

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