我有一个问题,只有在我使用 AnySoftKeyboard 时才会出现。 我正在尝试根据 EditText 焦点显示/隐藏键盘。 我使用了在 this post 中找到的方法
当我隐藏键盘时,有一个奇怪的行为 -
- 当我旋转屏幕时,EditText 中的文本加倍。
- 我认为它与 onCreate 方法有关,但我可以看到当我单击“后退”(Finish()) 时它也会发生。在 Activity 关闭之前我看到它一瞬间。
- 当我开始一个新 Activity 时,(ActivityA 中的 ActivityB)然后单击“后退”一次不会执行任何操作(可能“关闭”不可见的键盘)。
- 当我再次点击“后退”时,ActivityB 关闭,但我可以在一瞬间看到来自 ActivityA 键盘的文本在屏幕上以大字体显示(就像一个 100 毫秒的弹出窗口)
有没有人知道如何处理它?</p>
最佳答案
显然这是 AnySoftKeyboard 中的一个错误。 我使用其他键盘时没有发生。
我通过在隐藏它之前对 EditText View 执行 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);
令人惊讶的是它有效!
关于android - AnySoftKeyboard 在我隐藏它之后保留垃圾数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7716351/