2012-01-05 9 views
12

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

विंडो का उपयोग करना मैनिफेस्ट पर सॉफ़्ट इनपुट मोड बाहर है जो कीबोर्ड को तुरंत प्रदर्शित करता है।

android:windowSoftInputMode="stateUnchanged" 

मैं कोई लाभ नहीं हुआ

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

उपयोग करने की कोशिश की है। यहाँ कैसे मैं अपने गतिविधि से नए टुकड़ा प्रदर्शित है:

public void clickHandler(View view) { 
     switch (view.getId()) { 
     case R.id.login: 
      loginFragment = new LoginFragment(); 
      FragmentTransaction transaction = getSupportFragmentManager() 
        .beginTransaction(); 

      transaction.replace(R.id.fragment_container, loginFragment); 
      transaction.addToBackStack(null); 
      transaction.commit(); 
      getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); 
      break; 

...

मैं भी टुकड़ा के onCreate के भीतर से setSoftInputMode बुला की कोशिश की है और कहा कि साथ ही साथ काम नहीं किया है। सोच रहा था कि यह एक समय मुद्दा था, मैंने इसे handler.postDelayed के साथ करने की कोशिश की और यह भी काम नहीं किया। ऐसा लगता है:

onResume...  
Handler handler = new Handler(); 
      Runnable runnable = new Runnable() { 

       @Override 
       public void run() { 
        getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);     
       } 
      }; 

      handler.postDelayed(runnable, 1000); 

किसी भी मदद की सराहना की जाएगी। धन्यवाद।

+0

मुझे पता है, यह पुरानी है में लेकिन भविष्य में संदर्भ के लिए : मेरा मानना ​​है कि Window.setSoftInputMode को गतिविधि के ऑनक्रेट में एक बार किया जाना चाहिए, क्योंकि बाद में ऐसा प्रतीत नहीं होता है। ऑपरेशन के दौरान, InputMethodManager को परिवर्तनों के लिए उपयोग किया जाना चाहिए। – ProjectJourneyman

उत्तर

19

पर अपने onResume आप यह कर सकते हैं:

EditText someEditText = (EditText)getActivity().findViewById(R.id.someEditText); 
someEditText.requestFocus(); 
InputMethodManager mgr =  (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); 
mgr.showSoftInput(someEditText, InputMethodManager.SHOW_IMPLICIT); 
+0

धन्यवाद! जिसने –

+0

का काम किया है आपका स्वागत है नेल्सन: डी – jegumi

+4

मेरे लिए काम नहीं करता है। – feresr

4

मैं एक बहुत ही इसी तरह की समस्या हुई। टुकड़ा ए कॉल खंड बी जहां खंड बी (टैब के साथ लेआउट) में संपादन टेक्स्ट है। जब तक मैं किसी और चीज़ पर क्लिक नहीं करता तब तक कीबोर्ड इस संपादन टेक्स्ट बॉक्स के लिए नहीं आएगा।

मैंने यहां समाधान की कोशिश की, और कई अन्य स्टैक ओवरफ्लो समाधानों पर। MANY। मेरे लिए काम करने वाला एकमात्र ऐसा था जब एडिटटेक्स्ट पर क्लिक किया गया था, तो संपादन टेक्स्ट पर ध्यान केंद्रित करना था। OnFocusChangeListener में मैं कीबोर्ड को खोलने और बंद करने में सक्षम था।

यह समस्या केवल मेरे लिए एंड्रॉइड 2.34 डिवाइस पर 2.2 और 3.0 नहीं है। एम्यूलेटर के पास कोई समस्या नहीं थी। मेनिफेस्ट में केवल समायोजन किया गया था।

तो यहाँ

एक समाधान है कि (उम्मीद किसी और इस उपयोगी पाता है) मेरे लिए काम किया है:

onCreateView (...)

// 
    //Inflate Your Layout Here 
    // 

    //set on focus to force keyboard 
    editText.setOnFocusChangeListener(new OnFocusChangeListener() 
    { 
     @Override 
     public void onFocusChange(View v, boolean hasFocus) 
     { 
      Log.d(TAG,"On Foucs. Has Focus = " + hasFocus); 

      if (hasFocus) 
      { 
       //open keyboard 
       ((InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(v, 
         InputMethodManager.SHOW_FORCED); 
      } 
      else 
      { 
       //close keyboard 
       ((InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(
         v.getWindowToken(), 0); 
      }        
     } 
    }); 

    //Set on click listener to clear focus 
    editText.setOnClickListener(new OnClickListener() 
    { 
     @Override 
     public void onClick(View clickedView) 
     {       
      clickedView.clearFocus(); 
      clickedView.requestFocus();        
     }  
    });  
+0

मुझे इस छोटे से क्विर्क के बारे में पता था, लेकिन मैं इसके बारे में सब भूल गया। इसे पोस्ट करने के लिए धन्यवाद। मुझे एक गुच्छा में मदद मिली :-) – George

+0

बहुत बहुत धन्यवाद, मैंने कई तरीकों से भी कोशिश की, यह एकमात्र समाधान है। – thanhbinh84

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