android - 我无法在 Android 上隐藏虚拟键盘

标签 android android-fragments android-softkeyboard android-virtual-keyboard

我正在使用支持库处理 fragment 和 fragment 中的嵌套 fragment 。

我有一个场景,我从现有 fragment 中添加一个新 fragment (其中包含一个 EditText)。当用户点击 EditText 时,会显示一个虚拟键盘。但是,当键盘打开时,用户可以按下 ActionBar 中的主页按钮,这会从堆栈中删除 fragment ,但键盘仍保持打开状态。我无法强制关闭键盘,我尝试了所有代码 fragment 。鉴于所描述的情况,任何人都可以指导我如何解决这个问题吗?

编辑:我做了一个回调函数,我从 onDestroy fragment 中调用它。托管所有 fragment 的 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();
}

我收到 Toast 消息, fragment 在后退按钮(ActionBar 后退按钮)上被销毁,只有键盘仍然存在。

@Override
public void onDestroy() {
    hideSoftKeyboard.onHideSoftKeyboard(editTextComment);



    super.onDestroy();
}

最佳答案

尝试用这个强制键盘:

InputMethodManager imm = (InputMethodManager)getSystemService(
  Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);  

你也可以点赞:

imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);  

如果你想在用户点击 Up Home Button 时隐藏,在你的 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...

当您使用(覆盖)onBackPressed 方法时,您可以对后退按钮执行相同的操作。

关于android - 我无法在 Android 上隐藏虚拟键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20745986/

相关文章:

android - 如何以编程方式从设置中获取默认屏幕超时时间?

具有版本配置的 Android 布局无法正常工作

android - 如何在 MultiAutoCompleteTextView 获得焦点时显示软键盘

android - 工具栏不接触屏幕的两侧

c# - Android Resources.UpdateConfiguration(Configuration, DisplayMetrics) 弃用

android - 确定android中的backstack fragment 空状态

java - 如何在java中更改自定义android键盘的按键标签

android - adjustPan 不阻止键盘覆盖 EditText

android - 在Android中将数据从 Activity 发送到 fragment

android - 返回到上一个 fragment