2012-03-18 14 views
8

मैं जब गतिविधि शुरू होता है पर नरम कीबोर्ड खोलने के लिए चाहते हैं और मैंने पाया किएंड्रॉयड: windowSoftInputMode = "stateVisible" काम नहीं करता है

android:windowSoftInputMode="stateVisible" 

काम नहीं करता।

सुनिश्चित करने के लिए, मैं एक नई परियोजना (डिफ़ॉल्ट "हैलो दुनिया") बनाने और निम्नलिखित किया:

  1. प्रकट करने के लिए windowSoftInputMode गयी।
  2. उसके बाद काम नहीं किया, मैं लेआउट
  3. उसके बाद के लिए एक EditView क्षेत्र जोड़ा काम नहीं किया, मैं onCreate प्रक्रिया को

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE) गयी।

मैंने इसे एंड्रॉइड 2.3.3 के साथ संकलित किया और इसे अपने गैलेक्सी एस 2 डिवाइस और एंड्रॉइड 4 एमुलेटर पर चलाने की कोशिश की और अभी भी - कोई कीबोर्ड नहीं।

मेरे मैनिफ़ेस्ट फ़ाइल:

<?xml version="1.0" encoding="utf-8"?> 

<uses-sdk android:minSdkVersion="9" /> 

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name"> 
    <activity 
     android:name=".HelloworldActivity" 
     android:label="@string/app_name" 
     android:windowSoftInputMode="stateVisible"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

मेरे main.xml लेआउट:

<?xml version="1.0" encoding="utf-8"?> 

<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello" /> 

<EditText 
    android:id="@+id/editText1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" > 

    <requestFocus /> 

</EditText> 

मेरे कोड:

public class HelloworldActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); 

    } 
} 
+0

मुझे लगता है कि 'एंड्रॉइड: windowSoftInputMode' गतिविधि 'तत्व/टैग विशेषता है। – Deucalion

+0

आप सही हैं - मैंने इसे बदल दिया। अभी भी कोई कीबोर्ड नहीं –

+0

आपने क्या किया? क्या यह अंततः हल हो गया है? – Kenji

उत्तर

2

क्या आप डिफ़ॉल्ट एंड्रॉइड कीबोर्ड का उपयोग करते हैं? यदि आप करते हैं, तो इसे किसी अन्य डिवाइस पर आज़माएं, मुझे पता है कि इसमें कुछ समस्याएं हैं

+0

आप सही हैं। मेरे डिवाइस पर एक बाहरी कीबोर्ड स्थापित करने के बाद, किसी भी तरह से मेरा डिफ़ॉल्ट केबी डिवाइस सेटिंग्स से गायब हो गया था। जाहिर है यह एक ज्ञात मुद्दा है और इससे भी प्रभावित हुआ। मैंने एक अलग डिवाइस और इसके कामकाज का इस्तेमाल किया। मुझे अभी भी पता नहीं है कि एम्यूलेटर केबी क्यों नहीं दिखाता है। –

1

जैसा कि मैंने here पाया, आप कीबोर्ड जब गतिविधि निम्न कार्य करके शुरू होता है दिखा सकते हैं:

EditText editText = (EditText) findViewById(R.id.editText1); 
    InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
    mgr.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT); 

मैं बदल उनके नमूना कोड अपने एडिटटेक्स्ट की आईडी रखने के लिए, ताकि

0

पर काम करना चाहिए चलाकर EditText दृश्य पर orce पहले फोकस:

final EditText edit = (EditText) findViewById(R.id.editText1); 
edit.post(new Runnable() { 
    @Override 
    public void run() { 
     edit.requestFocus(); 
    } 
}); 

यह गतिविधि शुरू पर कीबोर्ड खोलने चाहिए।

+0

का उपयोग करने वाले विशिष्ट कीबोर्ड में एक बग था, अनावश्यक थ्रेड बनाने की कोई आवश्यकता नहीं है। बस समाधान के लिए मेरा जवाब देखें। –

+0

पोस्ट एक नया धागा नहीं बनाता है, यह दृश्य की कतार में एक रननेबल जोड़ता है, यह पूरी तरह से कुशल है। मैं अभी भी अपने समाधान के साथ जाऊंगा, मेरे लिए और अधिक सुरुचिपूर्ण लगता है। – marmor

+0

हां ज़रूर। यह भी ठीक काम करता है। कोडिंग का आनंद लें। –

3

इसकी सरल बात। मैंने इसे किया है और यह आपकी आवश्यकता के अनुसार काम करता है।

  1. मैनिफेस्ट के साथ कुछ भी न करें, इसे नई नई परियोजना बनाने के दौरान इसे छोड़ दें।

  2. अब इनपुट प्रबंधक को परिभाषित करें।

    public static InputMethodManager imm; 
    imm = (InputMethodManager)this.getSystemService(Context.INPUT_METHOD_SERVICE); 
    
  3. अब, यहाँ वेतन EditText मेरी EditText है और मैं उस गतिविधि की शुरुआत पर कुंजीपटल दिखा रहा हूँ।

    salaryEditText.setHint("select Salary/Wage"); 
    
    salaryEditText.setFilters(new InputFilter[] {new DecimalDigitsInputFilter(2)}); // Ignore this line 
    
    if(!(imm==null)) 
    imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,1); 
    

मदद मिलेगी कि कुंजीपटल जबकि गतिविधि शुरू दिखाने के लिए।

गतिविधि खत्म पर कुंजीपटल बंद करने के लिए कोड नीचे देखें: इस कोड

सफेद, जबकि आप गतिविधि खत्म।

imm.hideSoftInputFromWindow(salaryEditText.getWindowToken(), 0); 

आशा है कि यह आपकी समस्या का समाधान करेगा। यदि नहीं तो मुझे बताएं।

आनंद लें। :)

+0

मुझे एक ही समस्या है और यह काम नहीं करता है। – Kenji

+0

@kenji मैं सुझाव देता हूं कि अगर यह उत्तर आपके लिए काम नहीं करता है तो कृपया स्वीकार्य उत्तर का पालन करें। धन्यवाद। –

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