我已经创建了带有自定义类的选项卡条,并且在每个选项卡中显示了一个 fragment 。当键盘打开并且我切换到选项卡时,第二个 fragment 被调用但键盘没有隐藏。
我在两个 fragment 的 onCreateView() 中使用下面的代码,但它不起作用:
//To Hide Soft
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
最佳答案
在 onCreateView()
中使用该代码的问题是,只要在父 fragment/Activity 中创建选项卡,就会创建在选项卡中初始化的 fragment 。我对选项卡内 fragment 的行为进行了一些调查,并意识到您在覆盖许多生命周期方法(例如 onViewCreated()
、onResume()
)时会遇到同样的问题,等
我发现解决此问题的最佳方法是在要隐藏键盘的 fragment 中重写 setUserVisibleHint(boolean isVisibleToUser)
。只要 fragment 的可见性发生变化,就会调用此方法。
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
try {
InputMethodManager mImm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
mImm.hideSoftInputFromWindow(getView().getWindowToken(), 0);
mImm.hideSoftInputFromWindow(getActivity().getCurrentFocus().getWindowToken(), 0);
} catch (Exception e) {
Log.e(TAG, "setUserVisibleHint: ", e);
}
}
}
关于android - 在android中切换标签时隐藏键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28358881/