android

时间:2018-01-23 11:02:09

标签: java android

private void hideKeyboard() {
    try {
        // Close Soft Keyboard
        InputMethodManager inputManager = (InputMethodManager)
                mContext.getSystemService(Context.INPUT_METHOD_SERVICE);

        inputManager.hideSoftInputFromWindow(rootView.getWindowToken(),
                InputMethodManager.HIDE_NOT_ALWAYS);
    } catch (Exception keyboardHideExp) {
        Log.d("eEmp/HideKbExp", "Exception raised due to " + keyboardHideExp.toString());
    }
}

这用于fragment。我需要在class中使用相同的方法,但在rootView给出错误。如何在我的class中访问。

  

inputManager.hideSoftInputFromWindow(rootView.getWindowToken(),                       InputMethodManager.HIDE_NOT_ALWAYS);

我是android新手。

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:1)

试试这段代码。

Context mcontext;
View rootView;
classConstructor(Context context, View view){
this.mcontext = context;
this.rootView = view;
}
private void hideKeyboard()
{
try {
// Close Soft Keyboard
InputMethodManager inputManager = (InputMethodManager)
                mContext.getSystemService(Context.INPUT_METHOD_SERVICE);

inputManager.hideSoftInputFromWindow(rootView.getWindowToken(),
                InputMethodManager.HIDE_NOT_ALWAYS);
} catch (Exception keyboardHideExp) {
        Log.d("eEmp/HideKbExp", "Exception raised due to " + keyboardHideExp.toString());
}
}

答案 1 :(得分:0)

您需要父View。您的方法如何获得rootView变量? 最简单的方法是:

YourClass.class

public void closeKeyboard(Context context, View view) {
   InputMethodManager inputMethodManager =(InputMethodManager)context.getSystemService(Activity.INPUT_METHOD_SERVICE);
   inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
}  

或者代替view.getWindowToken()使用context.getCurrentFocus().getWindowToken()

YourActivity.class

EditText editText = findViewById(R.id.my_edit_text);
new YourClass().closeKeyboard(this, editText);  

EditText应该处于活动/片段布局中。

答案 2 :(得分:0)

您可以在使用Fragment时使用此功能。

private void hideKeyBoard() {
    if (getActivity().getCurrentFocus() != null) {
        InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(getActivity().getCurrentFocus().getWindowToken(), 0);
    }
}

这对我有用......