Android 在我隐藏垃圾数据后,任何软键盘都会保留垃圾数据

Android 在我隐藏垃圾数据后,任何软键盘都会保留垃圾数据,android,user-interface,keyboard,android-edittext,Android,User Interface,Keyboard,Android Edittext,我有一个问题,只有当我使用任何软键盘时才会出现。 我正试图根据EditText焦点显示/隐藏键盘。 我使用了我在中找到的方法 当我隐藏键盘时,有一种奇怪的行为- 当我旋转屏幕时,编辑文本中的文本会加倍 我认为这与onCreate方法有关,但我可以看到,当我单击“后退”(Finish())时,它也会发生。在活动结束前的一瞬间,我看到了它 当我开始一个新的活动时,(ActivityA中的ActivityB),然后单击“后退”一次不会做任何事情(可能是“关闭”不可见的键盘) 当我再次单击“上一步”时

我有一个问题,只有当我使用任何软键盘时才会出现。 我正试图根据EditText焦点显示/隐藏键盘。 我使用了我在中找到的方法

当我隐藏键盘时,有一种奇怪的行为-

  • 当我旋转屏幕时,编辑文本中的文本会加倍
  • 我认为这与onCreate方法有关,但我可以看到,当我单击“后退”(Finish())时,它也会发生。在活动结束前的一瞬间,我看到了它
  • 当我开始一个新的活动时,(ActivityA中的ActivityB),然后单击“后退”一次不会做任何事情(可能是“关闭”不可见的键盘)
  • 当我再次单击“上一步”时,ActivityB关闭,但我可以在一瞬间看到屏幕上大字体的ActivityA键盘文本(如100毫秒的弹出窗口)
有人知道如何处理吗?

试试这个:

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

显然,这是任何软键盘中的一个缺陷。 当我使用其他键盘时,我没有这样做

我通过在隐藏它之前对EditText视图执行setText来解决这个问题——它可能会重置键盘对象上的某些内容

这是我的密码:

        View view = getWindow().getCurrentFocus();
        if (view==null)
            return;

        IBinder binder = view.getWindowToken();
        if (binder == null)
            return;

         // I used this to fix the strange behaviour
        if (view instanceof EditText)
            ((EditText)view).setText(((EditText)view).getText().toString());


        InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(binder, InputMethodManager.HIDE_NOT_ALWAYS);

令人惊讶的是,它的工作

显示您的代码引用您的确切问题…试试这个,