Java 防止android键盘造成延迟
我试图使用滑动手势来完成片段,如果片段显示键盘,键盘将隐藏。以下是一个示例:Java 防止android键盘造成延迟,java,android,android-fragments,keyboard,Java,Android,Android Fragments,Keyboard,我试图使用滑动手势来完成片段,如果片段显示键盘,键盘将隐藏。以下是一个示例: public void finishFragment() { View focus = getCurrentFocus(); InputMethodManager imm = null; if (focus != null) { imm = (InputMethodManager) focus.getContext(). getSystemServ
public void finishFragment() {
View focus = getCurrentFocus();
InputMethodManager imm = null;
if (focus != null) {
imm = (InputMethodManager) focus.getContext().
getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm.isActive()) {
imm.hideSoftInputFromWindow(focus.getWindowToken(), 0);
}
}
if (getFragmentManager().getBackStackEntryCount() > 1) {
getFragmentManager().popBackStack();
}
}
不幸的是,由于我沿着片段堆栈调用了一个服务,该服务挂起了UI显示,因此给了它一个滞后的外观。有人知道我如何在不调用服务的情况下隐藏键盘吗?或者我应该调用
异步进程吗?更好的是,有人知道如何onBackPressed()
移除键盘吗?在Android上控制键盘的方法只有两种:
- 以编程方式使用InputMethodManager,就像您正在做的那样(据我所知,这将始终需要您调用.getSystemService()来使用)
- 使用android:windowSoftInputMode=“X”在AndroidManifest中指定给定活动标记上下文中的键盘行为
所以要回答你的问题:“有人知道我如何在不呼叫服务的情况下隐藏键盘吗?”?您可以在AndroidManifest中执行以下操作,其中ActivityX是您希望具有此类行为的活动
AndroidManifest.xml:
<activity
android:name="com.namespace.of.ActivityXYZ"
android:windowSoftInputMode="stateHidden" />
如果您不知道
另一种方法是:与其像您正在做的那样以编程方式检查焦点和获取键盘,为什么不直接完成()管理您希望结束的片段的活动?如果键盘处于打开状态,这也将隐藏键盘
希望这有帮助