2012-03-29 9 views
6

मेरे पास मेरे अनुप्रयोग में सभी गतिविधियों की शुरुआत में this.setVolumeControlStream(AudioManager.STREAM_MUSIC); है, इसलिए जब उपयोगकर्ता वॉल्यूम ऊपर या नीचे बटन दबाता है, तो वह मीडिया वॉल्यूम को नियंत्रित करता है।setVolumeControlStream एक पॉपअप विंडो प्रदर्शित होने पर काम नहीं कर रहा है

मेरे पास मेरे प्रोग्राम में एक पॉपअप विंडो है और जब ऐसा लगता है कि उपयोगकर्ता अब वॉल्यूम को नियंत्रित नहीं कर सकता है।

इसी तरह के सवाल को देखते हुए ऐसा लगता है कि onKeyup/down श्रोताओं की स्थापना की प्रक्रिया में हस्तक्षेप कर सकते हैं - लेकिन मैं सेट किसी भी अप नहीं किया है - केवल श्रोताओं मैं पॉप अप विंडो के लिए है बटन के लिए setOnClickListeners और खिड़की के लिए एक setOnDismissListener हैं।

मैं इसे कैसे ठीक कर सकता हूं?

उत्तर

0

मैं

my_popup_window = new PopupWindow(layout, x, y, true); 

साथ पॉप अप विंडो बनाने किया गया था मैं तो इस के लिए इसे बदल ...

my_popup_window = new PopupWindow(layout); 
my_popup_window.setWidth(x); 
my_popup_window.setHeight(y); 

और वॉल्यूम नियंत्रण फिर से काम शुरू कर दिया। मुझे समझ में नहीं आता क्यों - लेकिन यह काम किया।

1

ऐसा लगता है कि आपको setOwnerActivity पर Dialog ऑब्जेक्ट पर कॉल करना होगा। विधि से

प्रलेखन:

गतिविधि है कि इस संवाद का मालिक सेट करता है। एक उदाहरण का उपयोग: यह संवाद गतिविधि की सुझाई गई वॉल्यूम नियंत्रण धारा का उपयोग करेगा।

परीक्षण नहीं किए जाने पर, यह चाल चलनी चाहिए। setVolumeControlStream का उपयोग करने की संभावना भी है।

+0

दुख की बात है कि मेरे पास एक पॉपअपविंडो है, एक संवाद नहीं, और न ही सेटऑनरएक्टिविटी और न ही सेट वॉल्यूम कंट्रोलस्ट्रीम उपलब्ध है। – Mick

+0

फिर आप भाग्य से बाहर हैं, मैं 'पॉपअपविंडो.जावा' और 'Dialog.java' के एओएसपी स्रोत के माध्यम से यह कैसे किया जा सकता है, लेकिन यह सिर्फ नहीं कर सकता है। 'पॉपअपविंडो' दृश्य को प्रदर्शित करने के लिए 'WindowManager' के निजी एपीआई का उपयोग करता है। आपको 'विंडो' पर 'setVolumeControlStream()' को कॉल करने की आवश्यकता होगी लेकिन इसका उपयोग नहीं किया जाता है। क्या कोई मौका है कि आप 'संवाद' आधारित विंडो में बदल सकते हैं? – Luminger

+0

मैं इसे देख लूंगा - लेकिन मुझे विश्वास नहीं है क्योंकि यह अब तक की सबसे जटिल खिड़की है। इसकी अत्यधिक अनुकूलित, एनिमेशन शामिल है और पूरी तरह से प्रोग्रामेटिक रूप से बनाई गई है। – Mick

0

मैं बस यह pop.setFocusable(false) करता हूं। और यह काम किया।

0

हालांकि मिक का जवाब मेरे लिए काम नहीं करता था, यह वंशावली के लिए है।

//Declaration 
PopupWindow mWindow; 
... 

//Constructor 
mWindow  = new PopupWindow(context); 
... 

//Prepare to Show 
mWindow.setContentView(); 
mWindow.setBackgroundDrawable(); 
mWindow.setFocusable(false); 
... 

सेटिंग setFocusableझूठी के लिए फिर से मेरी गतिविधि कब्जा onKeyDown() में मदद की।

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