2013-03-12 8 views
5

से लौटने के बाद कीबोर्ड बंद नहीं हो रहा है मेरे पास एक एंड्रॉइड ऐप है जो ईमेल पर किराने की एक सूची साझा करता है। मुझे एक समस्या है जिसमें मैंने ईमेल क्लाइंट द्वारा सूची भेजी (क्लाइंट या जीमेल क्लाइंट का आदान-प्रदान किया जा सकता है), कीबोर्ड बंद नहीं होगा।ईमेल क्लाइंट

मैं कोशिश की है:

InputMethodManager mgr = (InputMethodManager) getSystemService(
     Context.INPUT_METHOD_SERVICE); 
mgr.hideSoftInputFromWindow(editTxt.getWindowToken(), 0); 

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

android:windowSoftInputMode="stateAlwaysHidden" 

तो ऐप्स को कीबोर्ड को बंद करने के लिए बाध्य करेगा, लेकिन मैं कुंजीपटल फिर से खोलने हर बार चल जारी रहेगा:

मैं सहित एक समाधान मिल गया।

सैमसंग फोन के साथ समस्या केवल तभी मौजूद है जब मैं जीमेल क्लाइंट का उपयोग करता हूं। की activiy टैग में

उत्तर

2

एक समाधान मिला। कुछ मिलीसेकंड के बाद, एप (ईमेल-क्लाइंट) के बाहर संपादन टेक्स्ट दृश्य में फोकस बदल गया। फिर मैं कीबोर्ड बंद कर सकता हूं। तो मेरा समाधान इस तरह दिखता है:

Timer timer = new Timer(); 
timer.schedule(new TimerTask() { 

      @Override 
      public void run() { 
       closeKeyboard(); 
      } 
     }, 20); 
+0

मुझे लगता है कि बिल्कुल सही तरीके से जानने का कोई स्पष्ट तरीका नहीं है। मतदान करके भी, सही? इनपुट नाक सेवा विधियों और डेटा संरचनाओं के खेतों में मेरी नाक छड़ी करने की कोशिश की लेकिन वर्तमान फोकस से संबंधित कुछ भी नहीं मिला। – Meymann

0

उपयोग android:windowSoftInputMode="stateHidden" अपने प्रकट

+0

मेरे पास पहले से ही है। – lagos

+0

आपने उल्लेख किया है कि आपने राज्य का उपयोग किया है हमेशा के लिए ... इस उपयोग के बजाय राज्य प्रतिबंधित। यह मेरे लिए इसी तरह के मामलों के लिए काम करता है – stinepike

+0

क्षमा करें मेरी गलती, मैं राज्य का उल्लेख करता हूं हमेशा से प्रतिबंधित है क्योंकि एक इरादे से लौटने पर कीबोर्ड बंद करने के कामकाज के रूप में। – lagos

0

आप onResume() विधि में इस कोड डाल रहे हैं?

+0

मैं इरादा आग के लिए 'startActivityForResult() 'का उपयोग करता हूं, इसलिए मेरे पास'ActivityResult' के अंदर कोड है। लेकिन मैं इसे रीज़्यूम() विधि पर रखने की कोशिश करूंगा, एक शॉट के लायक है। – lagos

+0

मैंने इसे रेज़्यूम() पर रखने की कोशिश की, लेकिन समस्या यह है कि ऐप यह नहीं पहचानता कि कीबोर्ड खुला है, क्योंकि ऐप ने कीबोर्ड खोला नहीं है। तो कीबोर्ड संपादन टेक्स्ट पर केंद्रित नहीं है, और इसके लिए मैं इसे बंद नहीं कर सकता। मैंने इस इनपुट को 'इनपुटमैटमैनेजर आईएम = (इनपुट मोड मैनेजर) भी कोशिश की है .getAplicationContext()। GetSystemService (Context.INPUT_METHOD_SERVICE); \t \t im.hideSoftInputFromWindow (getCurrentFocus()। GetWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY); ' – lagos

+0

आप बूलियन के साथ एक चाल बना सकते हैं ... इस गतिविधि में एक बूलियन डालने का प्रयास करें। जब आप अपने आवेदन की दूसरी गतिविधि से आते हैं, तो इस बूलियन सत्य पर ऑनक्रेट() विधि डालें ... जब आप ईमेल क्लाइंट से आते हैं, तो इस बूलियन (या = गलत) को कम न करें और कीबोर्ड को छिपाने की स्थिति न हो जब यह बूलियन = गलत – StephaneT

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