在活动可见之前隐藏键盘

4

我有一个启动活动(A)并启动活动(B)的操作。

在某些情况下,活动A使用键盘。

我希望在启动B之前隐藏键盘(如果它已经显现)。

然而,在A启动B时,键盘仍然可见,在B已经出现后仅持续几秒钟。

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
startActivity(..); //starts Activity B

如何在调用B之前隐藏键盘?谢谢!
2个回答

9
在B Activity的onResume()方法中隐藏键盘。
public void onResume()
{
  super.onResume();
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
}

在A Activity的onPause()方法中隐藏键盘。
public void onPause()
    {
      super.onPause();
    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
    }

不起作用。在(B)活动可见后,我仍然能看到键盘一秒钟。 - dor506
抱歉,但不起作用。在 B 可见之后,我仍然看到键盘。 - dor506
1
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); // imm.hideSoftInputFromWindow(message.getApplicationWindowToken(), 0); 这也是用于隐藏键盘的。 - Abhi
在键盘隐藏时,在onPause()中调用getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);会导致在上一个活动中打开它。 - SpyZip
在 onResume() 中实现这个就可以了。 - Ahmed Adel Ismail

2

在你的AndroidManifest.xml文件中为你的活动添加android:windowSoftInputMode="stateHidden",使其如下所示

  <activity
      android:name="com.me.MyActivity"
      android:windowSoftInputMode="stateHidden"
   />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接