【发布时间】:2011-05-15 01:12:30
【问题描述】:
我遇到了 EditText 控件的问题。这个问题只发生在这个特定的活动上,没有其他带有 EditTexts 的活动。我已删除此 EditText 的所有 setText 调用,但问题仍然存在。
我在移动设备上运行 Android 2.3.4。它是 Nexus S 和运行库存的 Android。在模拟器中(运行 Android 2.2)不会出现这个问题。
当我旋转手机时,Android 会自动替换旋转前 EditText 中的文本。我没有使用 savedInstanceState 做任何事情。 Android 本身就是这样做的。
我的问题:
假设“test”一词在 EditText 中。当我旋转手机时,Android 会在重新创建 Activity 时将“testtest”放入 EditText。这仅在我使用虚拟键盘键入 EditText 时发生,我没有单击虚拟键盘上的“完成”按钮,我按下返回删除虚拟键盘,然后旋转设备。如果我使用“完成”按钮而不是后退按钮,则不会出现问题。
有什么想法吗?正如我所说,我不设置文本。所有调用 setText 的行都被注释掉了。
更新 1:除了 onCreate() 方法之外,我已经注释掉了这个 Activity 中的所有内容。问题仍然存在。
更新 2:我创建了一个新 Activity。这个全新的 Activity 只有一个 onCreate() 方法。 onCreate() 方法中唯一的事情是调用 setContentView(使用相同的布局文件)并调用 super 的 onCreate()。问题仍然存在。我难住了。我唯一能猜到的是布局文件有些古怪。我不知道那会是什么。
更新 3:除了 EditText 之外,我已经从布局中删除了所有内容。问题仍然存在。
【问题讨论】:
-
editText.append() 怎么样?你用这样的东西吗?如果是这样,也许你也应该禁用它们
-
如果您想通过配置更改存储 EditText 内容,到目前为止,我一直在成功使用 onRetainNonConfigurationInstance。例如,您可以从此方法返回您的 EditText 内容字符串。您可以使用getLastNonConfigurationInstance 在 onCreate 上检索它,如果没有可用的保存数据,则返回 null。
-
您是否尝试过使用物理设备?更新了你的 ADK?老实说,这听起来像是你的模拟器的一个错误。
-
我也有同样的问题。设备也是 Nexus S。在 EditText 中完成书写后,按下后退按钮并在改变方向后快速,内容加倍。但只有最后一个输入被强调并用于单词建议。
-
也发生在我身上。一开始以为我要疯了。如果我输入,启动另一个活动,点击后退按钮,然后旋转、繁荣、双文本。
标签: android rotation android-edittext