5

के बाद काम नहीं करता है मेरे पास एक एकल संपादन टेक्स्ट के साथ एक टुकड़ा है जिसे निरंतर खुला रहने के लिए सॉफ्ट कीबोर्ड की आवश्यकता होती है। स्क्रीन घुमाए जाने पर कीबोर्ड छुपा हो जाता है। मैं OnActivityCreated में showSoftInput को कॉल कर रहा हूं जो रोटेशन के बाद निष्पादित हो जाता है, लेकिन यह कीबोर्ड नहीं दिखाता है।showSoftInput अभिविन्यास परिवर्तन

InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.showSoftInput(edit, 0); 

नोट: मैं टॉगल सॉफ़्ट इनपुट का उपयोग नहीं करना चाहता हूं। मैंने कोशिश की है लेकिन यह कुछ मामलों में कीबोर्ड बंद करने के समाप्त होता है। और यह निर्धारित करने के लिए एंड्रॉइड से पूछने का कोई तरीका नहीं है कि कीबोर्ड पहले से ही खुला है या नहीं।

उत्तर

7

ऐसा लगता है कि showSoftInput टुकड़े के साथ बहुत त्रुटिपूर्ण है।

सबसे पहले @ TronicZomB के समाधान का प्रयास करें। यह एक टुकड़े के साथ एक गतिविधि के लिए काम करता है।

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); 

हालांकि, नेस्टेड FragmentTransactions के साथ एक गतिविधि के लिए, आप SHOW_FORCED और HIDE_NOT_ALWAYS मानकों के साथ toggleSoftInput उपयोग करने के लिए मजबूर हो जाएगा। HIDE_NOT_ALWAYS अभिविन्यास परिवर्तन के बाद पहले से खोले गए कीबोर्ड को बंद करने से टॉगल कमांड को रोकता है।

InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_NOT_ALWAYS); 

बाद में कीबोर्ड छिपाने के लिए, आप का उपयोग कर सकते हैं:

imm.hideSoftInputFromWindow(activity.findViewById(android.R.id.content).getWindowToken(), 0); 
1

निम्नलिखित के साथ InputMethodManager के बजाय ऐसे:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); 
+0

मैं पहले से ही onCreate में निम्नलिखित है:। getSherlockActivity() GetWindow() setSoftInputMode (WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE। | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); – bgolson

+0

आपकी विधि एक एकल गतिविधि के साथ एक साधारण गतिविधि के लिए काम करता है। हालांकि, अगर गतिविधि ने कई टुकड़ों (गतिविधि-> AddFragment-> ReplaceFragment) में "लेनदेन" किया है, तो यह अब काम नहीं करता है। – bgolson

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