5

मैं बटन क्लिक पर कीबोर्ड कैसे बंद करूं? मेरे पास एक टुकड़ा है जिसमें एक संपादन टेक्स्ट और दो बटन हैं। एक संपादन टेक्स्ट सामग्री प्रस्तुत करता है, दूसरा बस खंड को बंद कर देता है। अब जब टुकड़ा चला गया है, तो कीबोर्ड रहता है। हालांकि, बैक बटन दबाकर कीबोर्ड बंद हो जाता है या "पूर्ण" पर क्लिक करने से इसे बंद कर दिया जाता है। लेकिन जब मुझे खंड बंद हो जाता है तो कुंजीपटल गायब हो जाता है।बटन पर कीबोर्ड को खारिज करें उस करीबी खंड पर क्लिक करें

मैं इसी तरह के सवाल here, here या here पर समाधान की कोशिश की है, लेकिन कोई भी काम करने के लिए लगता है। उनमें से ज्यादातर NullPointerException फेंक देते हैं। सभी गतिविधियों के लिए टुकड़े नहीं हैं। कीबोर्ड फोन करने के लिए कोड काम करता है:

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

हालांकि मैं getActivity जोड़ने के लिए किया था() यह काम करने के लिए।

किसी भी मदद की सराहना की जाएगी।

उत्तर

7

इस विधि

public void hideKeyboard() { 
    // Check if no view has focus: 
    View view = getActivity().getCurrentFocus(); 
    if (view != null) { 
     InputMethodManager inputManager = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); 
     inputManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); 
    } 
} 
+0

जवाब के लिए धन्यवाद निम्नलिखित समारोह

public static void hideKeyboard(Activity activity) { InputMethodManager imm = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE); //Find the currently focused view, so we can grab the correct window token from it. View view = activity.getCurrentFocus(); //If no view currently has focus, create a new one, just so we can grab a window token from it if (view == null) { view = new View(activity); } imm.hideSoftInputFromWindow(view.getWindowToken(), 0); } 

यह कॉल का उपयोग करें। मैंने आपके समाधान की कोशिश की है लेकिन यह एक त्रुटि फेंकता है: 'अंतिम अपवाद: मुख्य प्रक्रिया: com.esqmo.apps.mosungiplus, पीआईडी: 14856 java.lang.NullPointerException: आभासी विधि' android.view.Ove देखें। एंड्रॉइड देखें .support.v4.app.FragmentActivity.getCurrentFocus() 'लाइन पर एक शून्य ऑब्जेक्ट संदर्भ' पर: ** देखें व्यू = getActivity()। getCurrentFocus(); ** –

+1

अब काम करता है: मैं getActivity() को कॉल कर रहा था। बैकप्रेस (); जो आपके कोड से पहले खंड को बंद कर देता है। मैंने अभी उन्हें उलटा कर दिया है। –

1

उपयोग विधि

public static void hideKeyboard(Context mContext) { 

    try { 

     View view = ((Activity) mContext).getWindow().getCurrentFocus(); 

     if (view != null && view.getWindowToken() != null) { 

      IBinder binder = view.getWindowToken(); 

      InputMethodManager imm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE); 
      imm.hideSoftInputFromWindow(binder, 0); 

     } 

    } catch (NullPointerException e) { 

     e.printStackTrace(); 

    } 

} 

नीचे की कोशिश करो इस प्रक्रिया में संदर्भ पैरामीटर पारित करने के लिए है में। उम्मीद है कि यह आपकी मदद करेगा।

4

एक टुकड़ा के लिए बटन क्लिक होने

btn_cancel.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      hideKeyboard(getActivity()); 
     } 
    }); 
संबंधित मुद्दे