2013-07-07 13 views
17

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

मैं

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

और

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

इसके बारे में दोनों डाल करने के लिए कीबोर्ड छिपाने नहीं है की कोशिश करो।

उत्तर

25

/स्लाइड दराज

InputMethodManager inputMethodManager = (InputMethodManager) this.getSystemService(Activity.INPUT_METHOD_SERVICE); 
    inputMethodManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(), 0); 
+0

मुझे हमेशा परेशानी होती है 'Fragments' (' NavigationDrawer' या 'ViewPager' में होने के दौरान) का उपयोग करते समय 'EditText' से' विंडोटेकन '। 'Activity.getCurrentFocus() 'एक चीज थी जिसे मैं याद कर रहा था। बहुत धन्यवाद। – shkschneider

1

समस्या यह है कि getWindowToken() को उस दृश्य से कॉल किया जाना चाहिए जो वर्तमान में कीबोर्ड को "होल्डिंग" कर रहा है। यह बहुत परेशान है, मैं आपसे सहमत हूं, लेकिन इस तरह यह काम करता है।

उदाहरण के लिए मान लें कि EditText mEditText वर्तमान में कुंजीपटल कीस्ट्रोक प्राप्त करने पर ध्यान केंद्रित करने वाला ऑब्जेक्ट है। तो फिर आपका कोड होगा:

InputMethodManager imm = 
        (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
      imm.hideSoftInputFromWindow(mEditText.getWindowToken(), 0); 

उम्मीद है कि इससे मदद मिलती है।

23

इस प्रयास करें बंद करने

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    ...... 

    //Initialize 
    drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 

    //Setting the actionbarToggle to drawer layout 
    drawerLayout.setDrawerListener(actionBarDrawerToggle); 

    //calling sync state is necessay or else your hamburger icon wont show up 
    actionBarDrawerToggle.syncState(); 

} 

DrawerListerner ope से पहले कोड की इस पंक्ति का उपयोग करें ...:

ActionBarDrawerToggle actionBarDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.app_name, R.string.app_name) { 

     @Override 
     public void onDrawerClosed(View drawerView) { 
      // Code here will be triggered once the drawer closes as we dont want anything to happen so we leave this blank 
      super.onDrawerClosed(drawerView); 
      InputMethodManager inputMethodManager = (InputMethodManager) 
        getSystemService(Context.INPUT_METHOD_SERVICE); 
      inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0); 
     } 

     @Override 
     public void onDrawerOpened(View drawerView) { 
      // Code here will be triggered once the drawer open as we dont want anything to happen so we leave this blank 
      super.onDrawerOpened(drawerView); 
      InputMethodManager inputMethodManager = (InputMethodManager) 
        getSystemService(Context.INPUT_METHOD_SERVICE); 
      inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0); 
     } 
    }; 

मुबारक कोडिंग ...

+0

आपको बहुत बहुत धन्यवाद। यह मेरी समस्या हल हो गया है :)) –

+0

हैलो सर, यह मुझे एक शून्य सूचक अपवाद देता है अगर (दराज! = शून्य) { drawer.setDrawerListener (टॉगल); hideKeyboard (यह); } और मैं appcompatv7 का उपयोग करके एंड्रॉइड स्टूडियो में ActionBarDrawerToggle में कोई भी परिवर्तन नहीं कर सकता। कृपया – Pihu

+0

की सहायता करें, कृपया अपना एक्शनबार ड्रावर टॉगल श्रोता ऑब्जेक्ट देखें, अगर यह ठीक से लागू नहीं किया गया है तो यह शून्य सूचक अपवाद के लिए प्रवण हो सकता है। –

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