-3

我把它放在我的按钮监听器上:

InputMethodManager inputManager =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);

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

它在键盘启动时非常有效:它关闭键盘然后继续执行。问题是,当没有EditText被按下时(它们都没有突出显示/聚焦),它会中断并且应用程序“停止工作”。

我想如果我可以检查是否曾经按下 EditText 会很好。

我试图这样做来检查:

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);

if (imm.isActive()) // returns true if any view is currently active in the input method
{
    imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.RESULT_UNCHANGED_SHOWN);
}

编辑

我最终这样做了:

我创建了这个方法:

public static void hideSoftKeyboard (Activity activity, View view) 
{
    InputMethodManager imm = (InputMethodManager)activity.getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(view.getApplicationWindowToken(), 0);
}

method然后我像这样在我的按钮监听器中调用:

hideSoftKeyboard(MainActivity.this, v); // MainActivity is the name of my class and v is the View I used in my button listener method.
4

2 回答 2

1

你可以使用这个:

您可以创建一个方法并在 onCreate() 方法上调用它:

public static void hideSoftKeyboard (Activity activity, View view) {
InputMethodManager imm = (InputMethodManager)activity.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getApplicationWindowToken(), 0);}

或者你可以像这样添加清单文件:

 <activity android:name="com.your.package.ActivityName"
  android:windowSoftInputMode="stateHidden"  />
于 2013-08-24T07:02:39.250 回答
0

平庸/糟糕的解决方案,因为它不像我想要的那样通用:

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);

EditText x = (EditText)findViewById(R.id.editText);
x.requestFocus(); // this way no matter what, an EditText is focused on.

imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.RESULT_UNCHANGED_SHOWN);
于 2013-08-24T07:00:58.583 回答