【问题标题】:AnySoftKeyboad stays with garbage data after I hide itAnySoftKeyboard 在我隐藏后保留垃圾数据
【发布时间】:2011-12-04 16:56:38
【问题描述】:

我有一个问题,只有在我使用 AnySoftKeyboard 时才会出现。 我正在尝试根据 EditText 焦点显示/隐藏键盘。 我使用了我在this post找到的方法

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

  • 当我旋转屏幕时,EditText 中的文本会加倍。
  • 我认为它与 onCreate 方法有关,但我可以看到当我单击“返回”(Finish())时也会发生这种情况。在 Activity 关闭之前,我看到它的瞬间。
  • 当我开始一个新活动时,(来自 ActivityA 的 ActivityB)然后单击“返回”一次不会执行任何操作(可能是“关闭”不可见的键盘)。
  • 当我再次单击“返回”时,ActivityB 关闭,但我可以在一瞬间看到 ActivityA 键盘中的文本以大字体显示在屏幕上(如 100 毫秒的弹出窗口)

有没有人知道如何处理它?

【问题讨论】:

标签: android user-interface keyboard android-edittext


【解决方案1】:

显然这是 AnySoftKeyboard 中的一个错误。 当我使用其他键盘时,我没有发生。

我通过在隐藏它之前对 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);

令人惊讶的是它的工作原理!

【讨论】:

    【解决方案2】:

    试试这个:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-16
      • 2015-02-15
      • 2012-01-14
      • 1970-01-01
      • 2015-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多