2011-08-03 19 views
9

संक्षिप्त प्रश्न: क्या यह सेवा से सॉफ्ट-कीबोर्ड प्रदर्शित करना संभव है (और कैसे)?सेवा से सॉफ्ट कीबोर्ड कैसे प्रदर्शित करें?

लंबे प्रश्न: मैंने एक ऐसी सेवा लिखी जो एक "टॉप बार" बनाता है, जो सभी गतिविधियों के शीर्ष पर प्रदर्शित होता है, जिसमें एडिटटेक्स्ट होता है। जब मैं एडिटटेक्स्ट क्लिक करता हूं तो मैं सॉफ्ट-कीबोर्ड प्रदर्शित करना चाहता हूं, लेकिन यह नहीं हो रहा है। , गतिविधि बढ़ा कर

InputMethodManager imm = (InputMethodManager)this.getSystemService(Service.INPUT_METHOD_SERVICE); 
imm.showSoftInput(editText, InputMethodManager.SHOW_FORCED); 

वैकल्पिक हल मैं के साथ आया था कुंजीपटल दिखाने के लिए वर्तमान गतिविधि का अनुरोध करने के लिए है:

बेशक मैं सेवा के onFocusChange() और onClick() से इस की कोशिश की है कक्षा और एक एआईडीएल इंटरफ़ेस जोड़ना। दोष यह है कि प्रत्येक कुंजी घटना को सेवा (अन्य एआईडीएल इंटीफेस के माध्यम से) पर वापस भेजना पड़ता है और मैन्युअल रूप से यूनिकोड में परिवर्तित किया जाता है।

इसके अलावा, अगर वर्तमान गतिविधि एक EditText होता है, नरम कुंजीपटल केवल गतिविधि के लिए काम करता है और जब सेवा के EditText चयन किया जाता है अब और दिखाई नहीं देता।

यदि वर्तमान गतिविधि में संपादन टेक्स्ट है तो सेवा के सॉफ्ट-कीबोर्ड को प्रदर्शित करने से रोकता है? क्या यह एंड्रॉइड सीमा हो सकती है?

+0

आप इस हल किया है? मुझे एक ही समस्या का सामना करना पड़ रहा है –

उत्तर

0

आप edittext के छूने पर नरम कीबोर्ड को दिखाने के लिए चाहते हैं, तो तुम क्यों कि edittext साथ onTouchListener का उपयोग कर पर विचार नहीं है। मैं beleive edittext.requestfocus() यह भी करूँगा। यदि नहीं, श्रोता निश्चित रूप से काम करेगा।

इसके अलावा आप जिस तरह के विचार का उल्लेख करते हैं, उसके लिए दृश्य बनाने के लिए सेवा के बजाय टुकड़ों का उपयोग करना सबसे अच्छा होता।

1

मुझे इसी तरह के मुद्दे का सामना करना पड़ रहा है। लेकिन मेरे मामले में, समस्या, जबकि दृश्य के लिए WindowManager.LayoutParams बनाने WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE ध्वज का उपयोग करने के लिए कारण है।

और कीबोर्ड दृश्यता

InputMethodManager inputManager = (InputMethodManager) context. 
       getSystemService(Context.INPUT_METHOD_SERVICE); 
     if (inputManager != null) { 
      inputManager.toggleSoftInput(0, InputMethodManager.SHOW_IMPLICIT); 
     } 
संबंधित मुद्दे