एंड्रॉइड सॉफ्टकबोर्ड एमुलेटर में कभी नहीं दिखाता है


86

मैं Android के लिए नया हूँ। मैंने खोज के लिए दो घंटे पहले ही बिता दिए हैं। मैं जो भी सॉफ्टबोर्ड की कोशिश करता हूं वह मेरे लिए कभी नहीं दिखाया जाता है EditText। मैं इसे बस बनाता हूं:

EditText editText = (EditText)findViewById(R.id.editText);

मैंने कोशिश की:

 editText.requestFocus();//i tried without this line too
 InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
 imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);

तथा:

editText.setOnFocusChangeListener(new OnFocusChangeListener() {

         @Override
         public void onFocusChange(View v, boolean hasFocus) 
         {    

                     InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
                     imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);

         }
     });

मैंने भी कोशिश की:

getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);

मैंने इस लाइन को AndroidManifest.xmlफ़ाइल में डालने की कोशिश की :

 android:windowSoftInputMode="stateVisible|adjustResize"

लेकिन सब व्यर्थ। यह कभी नहीं दिखाता है। मैं क्या खो रहा हूँ?


क्या कीबोर्ड किसी अन्य एप्लिकेशन में खुल रहा है?
निरंज पटेल

इसे बदलने की कोशिश करें। imm.showSoftInput (editText, InputMethodManager.SHOW_IMPLICIT); इसे to.toggleSoftInput (InputMethodManager.SHOW_FORCED, 0);
अरविन

@CapDroid नहीं, दुर्भाग्य से। मैं एक और आवेदन में की कोशिश की, लेकिन अभी भी कोई भाग्य
एंड्री चेरुखा

@ अरविंद अभी भी काम नहीं करता है
एंड्री

क्या आप एमुलेटर या डिवाइस का उपयोग कर रहे हैं।
अरविन

जवाबों:


211

आपको यह सुनिश्चित करने की आवश्यकता है कि हार्डवेयर कीबोर्ड का उपयोग करने के लिए आपका एमुलेटर सेट नहीं है । यह EditAVD में एक चयनित एमुलेटर पर चुनकर किया जा सकता है । फिर सेटिंग को अनचेक करें Hardware keyboard present

आप एक अलग एमुलेटर जैसे कि Genymotion का उपयोग करके भी प्रयास कर सकते हैं । यह पूर्ण हार्डवेयर त्वरण (मल्टी-कोर सीपीयू के साथ-साथ GPU) का समर्थन करता है और किसी भी एंड्रॉइड एमुलेटर छवियों की तुलना में बहुत तेज चलता है। यदि आप Genymotion का उपयोग करते हैं, तो आपको Android के भीतर हार्डवेयर कीबोर्ड को अक्षम करना होगा (विवरण के लिए नीचे देखें)।

Genymotion में हार्डवेयर कीबोर्ड को अक्षम करने के लिए: -> पर
जाएं और नीचे दिए गए आइटम को खोलें । एक सेटिंग है जिसे आप चालू / बंद कर सकते हैं। जब यह आप पर होता है , तो आप अपने भौतिक कीबोर्ड का उपयोग करते हैं और जब यह मानक सॉफ्ट कीबोर्ड बंद हो जाता है, तो जब भी किसी पाठ क्षेत्र पर ध्यान केंद्रित किया जाता है, तो उसे पॉप-अप करना चाहिए।SettingsLanguage & inputDefaultKeyboard & Input MethodsHardware

Genymotion सेटिंग्स के लिए स्क्रीनशॉट: डिफ़ॉल्ट आइटम

यहां छवि विवरण दर्ज करें


4
आखिरकार! आपका बहुत बहुत धन्यवाद। काश मैं आपके उत्तर को दो बार बढ़ा पाता। उत्पत्ति के लिए - मैंने इसे स्थापित करने की कोशिश में एक दिन बिताया लेकिन यह काम नहीं किया। मैं उनके समर्थन में भी नहीं लिख सकता था
एंड्री चेर्नुखा

मदद के लिए खुशी :) प्रतिभा के रूप में, वे लगातार सुधार कर रहे हैं, लेकिन यह अभी भी पूर्वावलोकन / बीटा है। हालाँकि, जब से मैंने इसका उपयोग करना शुरू किया, मुझे कोई समस्या नहीं हुई। हो सकता है कि मैं बस इसके साथ शुरू कर दिया था एक बार वे समस्याओं के अधिकांश हल किया था - या मैं सिर्फ भाग्यशाली हूँ :)। कहा कि, Android एमुलेटर हालांकि अधिक भिन्नता देते हैं, इसलिए मैं अभी भी परीक्षण संगतता के लिए उनका उपयोग करता हूं।
free3dom

यह बहुत अच्छा है, अब मुझे वर्चुअल कीबोर्ड मिल गया है! लेकिन मेरे पास Android के साथ एक EditText है: inputType = "numberDecimal"> और virtualkeyboard नंबर नहीं लिखते हैं (यह उन्हें केवल तभी लिखते हैं जब मैं उनके सामने एक पत्र लिखता हूं)। वर्तनी परीक्षक पहले से ही बंद है ...
मिशेल

संभावित समाधान के लिए यहां एक नज़र डालें ।
free3dom

@ free3dom ~ "कीबोर्ड और इनपुट विधियों के तहत डिफ़ॉल्ट आइटम खोलें" वह क्या है? मुझे वह आइटम दिखाई नहीं दे रहा है।
इगोरगानापोलस्की

73

संस्करण 2.1.1 में - अपनी वर्चुअल डिवाइस सेटिंग्स पर क्लिक करें - फिर "टाइपिंग के लिए वर्चुअल कीबोर्ड का उपयोग करें" चेकबॉक्स चुनें। यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें


2

1.1.0 के रूप में हार्डवेयर कीबोर्ड को अचयनित करने के लिए दो स्थान हैं। यह पर्याप्त नहीं है:

यहां छवि विवरण दर्ज करें

इसे अवश्य करें (क्लिक करें Tools | Android | AVD Manager; फिर नया बनाएं या पुराने AVD को संपादित करें और फिर क्लिक करें Show Advanced Settings; नीचे स्क्रॉल करें और साफ़ करें Enable keyboard input):

यहां छवि विवरण दर्ज करें


मैंने इस समाधान को खोजने में समय बिताया क्योंकि स्क्रॉल संकेतक सामान्य रूप से चला गया है और केवल एक बार आप स्क्रॉल करना शुरू करते हैं। मैं सुझाव दूंगा कि यदि कोई दृश्य स्क्रॉल करने योग्य है, तो उस संभावना के कुछ संकेत नेत्रहीन हैं।
ग्रेग

एंड्रॉइड स्टूडियो में मेरे लिए काम नहीं करता है। मैं "कीबोर्ड इनपुट सक्षम करें" को अनचेक करता हूं लेकिन एमुलेटर अभी भी सॉफ्टवेयर कीबोर्ड नहीं दिखाता है।
इवगेनी

आपने केवल एक "अनचेक" का उल्लेख किया है। दूसरे "हार्डवेयर कीबोर्ड है", जैसा कि दिखाया गया है - और आपने शायद पहले ही इसे मंजूरी दे दी है, भी। शायद एक अलग आभासी डिवाइस की कोशिश करो? मैं AS एमुलेटर को बर्दाश्त करने के लिए बहुत मुश्किल हो गया है। लोड करने के लिए धीमा, इस तरह से quirks .... शुभकामनाएँ।
DSlomer64

2

एंड्रॉइड स्टूडियो 2+ एमुलेटर के लिए ऑन-स्क्रीन सॉफ्ट कीबोर्ड को सक्षम करने की विधि एमुलेटर के एपीआई स्तर पर निर्भर करती है। मैंने एपीआई 15 से शुरू होने वाले विभिन्न तरीकों का परीक्षण किया है और नीचे दिए गए चरणों को दर्ज किया है।

[ए] एपीआई १५, १ 15, १ ९ और २१।

निम्न चरणों में ऑन-स्क्रीन सॉफ्ट कीबोर्ड सक्षम होगा लेकिन पाठ दर्ज करने की क्षमता को अक्षम करेगा और हार्डवेयर कंप्यूटर कीबोर्ड का उपयोग करके AVD के साथ इंटरैक्ट करेगा।

  1. Android वर्चुअल डिवाइस मैनेजर (AVD) में, उस डिवाइस के लिए संपादन क्रिया पर क्लिक करें, जिसके साथ आप काम करना चाहते हैं
  2. उन्नत सेटिंग दिखाएं पर क्लिक करें और पृष्ठ के नीचे "कीबोर्ड" अनुभाग तक स्क्रॉल करें
  3. "कीबोर्ड इनपुट सक्षम करें" विकल्प को अनचेक करें

[ख] एपीआई २२

सॉफ्ट कीबोर्ड को प्रदर्शित नहीं किया जाता है, चाहे आप हार्डवेयर कीबोर्ड सेटिंग्स के साथ करते हों। यदि आप नरम कीबोर्ड के साथ हार्डवेयर कीबोर्ड समर्थन को सक्षम करना चाहते हैं तो,

  1. AVD में, उस डिवाइस के लिए संपादन क्रिया पर क्लिक करें जिसके साथ आप काम करना चाहते हैं
  2. उन्नत सेटिंग दिखाएं पर क्लिक करें और पृष्ठ के नीचे "कीबोर्ड" अनुभाग तक स्क्रॉल करें
  3. "कीबोर्ड इनपुट सक्षम करें" विकल्प की जांच करें

[सी] एपीआई २३

यदि आप हार्डवेयर और सॉफ्ट कीबोर्ड का उपयोग करना चाहते हैं तो ...

  1. 1 से 3 चरणों में [बी] का पालन करें
  2. वर्चुअल डिवाइस पर, सेटिंग्स लॉन्च करें, फिर भाषा और इनपुट / करेंट कीबोर्ड का चयन करें
  3. हार्डवेयर सक्षम करें - इनपुट विधि दिखाएं

यदि आपको AVD उन्नत सेटिंग्स में हार्डवेयर कीबोर्ड की आवश्यकता नहीं है, तो "कीबोर्ड इनपुट सक्षम करें" विकल्प को अनचेक करें। आपको वर्चुअल डिवाइस पर किसी भी सेटिंग को बदलने की आवश्यकता नहीं होगी।

[डी] एपीआई २४ और २५

  1. उपरोक्त बी 1 से 3 चरणों का पालन करें, "हार्डबोर्ड कीबोर्ड को सक्षम करना चाहते हैं या नहीं, इसके आधार पर" सक्षम कीबोर्ड इनपुट "विकल्प की जाँच या अनचेक करें।
  2. वर्चुअल डिवाइस पर, सेटिंग्स लॉन्च करें, फिर भाषा और इनपुट / भौतिक कीबोर्ड का चयन करें
  3. "वर्चुअल कीबोर्ड दिखाएं" सक्षम करें

यदि एवीडी में सक्षम कीबोर्ड इनपुट विकल्प का चयन किया गया था, तो अब आप हार्ड और सॉफ्ट कीबोर्ड इनपुट दोनों का उपयोग कर पाएंगे। यदि आपने AVD में विकल्प को अनचेक किया तो सॉफ्ट कीबोर्ड को बिना परवाह किए प्रदर्शित किया जाएगा।

[ई] एपीआई २६

ठीक उसी तरह जैसे कि [D] API २४ और २५ को छोड़कर आपको भाषा और इनपुट / भौतिक कीबोर्ड पर पहुंचने से पहले डिवाइस सेटिंग्स में एक अतिरिक्त "सिस्टम" मेनू स्तर के माध्यम से नेविगेट करने की आवश्यकता होती है


1

हो सकता है आपका एमुलेटर सॉफ्टबोर्ड का समर्थन न करे।

हार्डवेयर गुण कीबोर्ड समर्थन जोड़ें और इसे अपने एमुलेटर के लिए सही पर सेट करें।

यदि यह पहले से ही सत्य है तो इस उत्तर को जांचें।


1

दिखाना:

EditText editText = (EditText) findViewById(R.id.myEdit);
InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
// only will trigger it if no physical keyboard is open
mgr.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);

और छिपाने के लिए:

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

बस यह एक कोशिश करो ...।


यह मदद नहीं की, दुर्भाग्य से
एंड्री चेर्नुखा

InputMethodManager imm = (InputMethodManager) getSystemService (Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput (InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY); ... इस कोशिश
FarhaSameer786

@ एंड्री चेर्नुखा- मुझे लगता है कि आपका एमुलेटर सॉफ्टकबोर्ड का समर्थन नहीं करता है या एमुलेटर का हार्डवेयर ठीक से काम नहीं कर रहा है .....
फरहासमीरा 786
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.