java - App恢复时Android EditText有时会丢失输入

标签 java android xml eclipse data-persistence

我制作了一个基本的数据记录应用程序,它应该让用户输入值到一个动态的并且通常是大量的 EditText View 中。用户输入完所有数据后,可以按下一个按钮,为输入的数据拍照(请耐心等待将输入存储为图片,这有特定的原因),并将图片保存到存储中.

问题: 除了一个特定问题外,它工作得很好。有时,当用户将手机置于空闲状态时(在输入实际保存之前经常发生),EditText View 中的所有输入都将被清除(这让我非常生气/悲伤)。更重要的是,只有当我在现场并且无法查看 eclipse 中的日志文件以弄清楚哪些方法的调用方式可能与正常情况不同时,才会发生这种情况。

问题: 为什么我的 EditText 中的值在手机进入和离开空闲状态的大部分时间都保持不变,但在看似随机(且通常不方便)的情况下它们会清除?

我感觉这是由于在某些情况下调用了 onStop() 而不是 onPause() (或者反之亦然),但我对这些方法的了解还不够快。另外,我知道这个问题可以通过 sharedPreferences 文件(或类似的想法)来解决,但我想知道发生了什么,以便更好地理解。

详细信息:

-我不确定这段代码中的任何一段是否以有意义的方式与问题相关,但如果有帮助,我将包括我的 onCreate() 方法的 fragment 。让我知道是否应该添加任何其他内容:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_input_param);

    Intent intent = getIntent();
//Rest of the code just builds the layout from data taken from the intent

-除了 onCreate() 之外,我没有覆盖任何生命周期方法(即 onStop()、onResume() 等)。据我所知,我 Activity 中的其他方法都不应该与这个问题有任何关系

最佳答案

我认为问题在于,有时当您的应用进入“空闲”状态(即进入后台、屏幕关闭)时,Android 会自动清理并销毁所有数据,包括您的 EditTexts 中的数据

If an activity is paused or stopped, the system can drop the activity from memory by either asking it to finish, or simply killing its process. When it is displayed again to the user, it must be completely restarted and restored to its previous state.

http://developer.android.com/reference/android/app/Activity.html

要解决此问题,您可以覆盖 onSavedInstanceState() 方法以保存您的 EditText 值,然后 onCreate() 将提取这些值当您返回 Activity 时返回。然后,您需要进行检查以查看是否需要根据这些值重新填充 EditTexts,或者它们是否为空。关于此的更多信息 here .

关于java - App恢复时Android EditText有时会丢失输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25083753/

相关文章:

android - 为什么我的程序返回 google sign in 12500 错误?

c++ - C++ 最常用的 XML 库是什么?

ruby - 使用 XPath 按多个值过滤

java - 为什么 GZIP "os" header 在 Java 中被硬编码为 FAT?

Java:为什么两个类中的两个文字(相同的内容)使用相同的内部字符串?

java - 创建处理器的bean(Spring Batch)并注入(inject)其依赖项

android - 跳过编辑文本中的条目

Android加载大位图

javascript - 使用 JavaScript 解析 XML 文件

java - .class 预期错误