【问题标题】:Empty EditText when turning screen on and Screen lock set to None打开屏幕并将屏幕锁定设置为无时清空 EditText
【发布时间】:2012-11-01 06:35:38
【问题描述】:

我遇到的问题是,当系统屏幕锁定设置为无时,关闭屏幕然后再打开屏幕后,横向/全屏模式下的 EditText 变空。键盘保持活动状态,但似乎没有焦点,屏幕上也没有显示任何文本更新。如果我点击完成按钮或旋转到纵向,则全屏编辑器将被移除,我可以在正常的 EditText 视图中看到之前输入的文本。

我在模拟器和设备上都在 JB 上重现了这个。 EditText 有一个 android:id,我在各种 EditText 和 AutoCompleteTextView 配置中发现了这个问题,但只有当系统屏幕锁定设置设置为无时。当它设置为幻灯片或图案时一切正常,所以我怀疑缺少屏幕锁定是这个问题的根源。

我在日历中发现了同样的问题,但在消息传递中没有。在横向/全屏模式下编辑 SMS 消息然后关闭/打开屏幕时,消息起初看起来是空的,但一秒钟后又返回。我查看了下面的源代码,但在 onResume() 中没有发现任何可以解决此问题的特殊内容。

https://github.com/android/platform_packages_apps_mms/blob/master/src/com/android/mms/ui/ComposeMessageActivity.java

有谁知道如何正确解决此问题,以便当屏幕锁定为无时,您可以在横向/全屏模式下编辑文本,关闭屏幕然后重新打开,文本会在您离开时显示?

【问题讨论】:

  • 意味着当您将设备纵向更改为横向时,它会删除您的数据是吗?
  • 不,方向更改工作正常。这是关于在全屏横向编辑器中,关闭屏幕然后打开,文本不再显示在编辑器中。仅当系统屏幕锁定设置为无时才会出现此问题。当它是任何其他值时,例如 Slider 或 Pattern,文本在打开屏幕并解锁后正确显示在编辑器中。

标签: android


【解决方案1】:

作为(希望)临时修复,我在onResume() 中包含了以下行,它似乎可以解决问题。最初我试图只在 IME isFullscreenMode() 时运行它,但这在 onResume() 中返回 false(在 onPause() 中返回 true 之后)。我猜这是问题根源的一部分。当系统锁屏为None且屏幕开启时,IME并不知道它实际上处于全屏模式。

View view = getCurrentFocus();

if (view != null) {
    ((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE))
            .restartInput(view);
}

【讨论】:

    猜你喜欢
    • 2014-07-20
    • 2015-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-21
    • 1970-01-01
    • 1970-01-01
    • 2016-10-05
    相关资源
    最近更新 更多