Spe*_*mon 2 android android-softkeyboard android-fragments android-virtual-keyboard
我正在使用支持库处理碎片并在片段中嵌套片段.
我有一个场景,我在现有片段中添加一个新片段(包含一个EditText).当用户点击EditText时,会显示虚拟键盘.但是当键盘打开时,用户可以按下ActionBar中的主页按钮,从堆栈中删除片段,但键盘仍然保持打开状态.我无法强行关闭键盘,我尝试了所有代码片段.鉴于所描述的情景,任何人都可以指导我如何解决这个问题?
编辑:我做了一个回调函数,我从片段onDestroy调用.承载所有片段的MainActivity实现此回调:
@Override
public void onHideSoftKeyboard(EditText editText) {
// HIDE SOFT KEYBOARD HERE
final InputMethodManager imm = (InputMethodManager)this.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
Toast.makeText(this,"KEYBOARD HIDDEN",Toast.LENGTH_LONG).show();
}
Run Code Online (Sandbox Code Playgroud)
我收到Toast消息,并且在后退按钮(ActionBar后退按钮)上销毁了片段,只有键盘仍然存在.
@Override
public void onDestroy() {
hideSoftKeyboard.onHideSoftKeyboard(editTextComment);
super.onDestroy();
}
Run Code Online (Sandbox Code Playgroud)
fll*_*llo 13
尝试用这个强制键盘:
InputMethodManager imm = (InputMethodManager)getSystemService(
Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
Run Code Online (Sandbox Code Playgroud)
你也可以这样:
imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
Run Code Online (Sandbox Code Playgroud)
如果要在用户单击"上一页"按钮时隐藏,请在onOptionsItemSelected方法中尝试这样:
case android.R.id.home:
// count the active fragment
if(getSupportFragmentManager().getStackBackEntryCount() > 0) {
// hide soft method as above
InputMethodManager mImm = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE);
mImm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
// do the pop backstack
getSupportFragmentManager().popBackStack();
} else {
// some stuff like finish the activity
}
return true;
// other items...
Run Code Online (Sandbox Code Playgroud)
使用(覆盖)onBackPressed方法时,可以使用后退按钮执行相同操作.
| 归档时间: |
|
| 查看次数: |
4616 次 |
| 最近记录: |