【问题标题】:How to keep entered text in edittext field?如何在edittext字段中保留输入的文本?
【发布时间】:2017-03-27 07:44:54
【问题描述】:

我正在创建一个需要用户在 Main_Activity.xml 中输入姓名、电子邮件、日期等的应用程序。然后,用户将单击提交。输入的数据将显示在confirm.xml 中。在confirm.xml中,用户需要验证输入的数据,如果要编辑输入的数据,他们将点击返回按钮再次编辑数据。我试图这样做,但是一旦我点击后退按钮,我在 editText 字段中输入的所有数据都消失了。我想保留我在 MainActivity.xml 的 editText 字段中输入的数据,所以我只能更改一些需要编辑的字段。我怎样才能做到这一点?谢谢。

【问题讨论】:

  • 显示你的代码
  • 你清除数据了吗?
  • 不要在mainactivity中使用finish()这样的关键字
  • 使用共享首选项存储/获取数据,确认后清除。
  • @Shree 谢谢你的建议。我刚刚阅读了有关共享偏好的信息。我试试看。

标签: java android


【解决方案1】:

当您输入数据的活动被破坏时,可能会发生这种情况。如何打开新的确认活动?这是可能包含错误的代码部分。

如果您在打开新活动时调用finish(),则活动将被销毁并清除保存在EditText 中的数据。

要打开一个新活动并保留当前活动的数据,您只需调用startActivity(...) 而不使用finish()

Intent intent = new Intent(context, ConfirmationActivity.class);
startActivity(intent);

无论如何,android 可以在需要时销毁 Activity 以释放内存。当您打开另一个需要内存但内存已被您的应用程序使用的应用程序时,就会发生这种情况,因此系统会破坏您的活动,您可以使用Bundles 将数据保存在磁盘上并恢复它们。

我建议您阅读本指南https://developer.android.com/guide/components/activities/activity-lifecycle.html

【讨论】:

  • 感谢您的建议。我试试看。
【解决方案2】:

您可以覆盖onSaveInstanceState(Bundle savedInstanceState) 函数并使用savedInstanceState 来保存您希望在onCreate(Bundle instanceState)onRestoreInstanceState(Bundle instanceState) 期间取回的各种数据。

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
  super.onSaveInstanceState(savedInstanceState);
  savedInstanceState.putString("TextFieldX", "Data To Retrieve");
}

然后拿回来:

@Override
public void onCreate(Bundle savedInstanceState) {
  super.onRestoreInstanceState(savedInstanceState);
  //get back value
  String value = savedInstanceState.getString("TextFieldX");
}

https://developer.android.com/reference/android/os/Bundle.html

为了延长数据的持久性,您可以将其写入SQLite

【讨论】:

  • 感谢您的建议。我试试看。
【解决方案3】:

您可以将所有信息保存到字符串中,例如私有字符串名称; 当用户输入名称时写入/设置此名称并再次使用它,如下所示:

if(name != null && !name.toString().isEmpty()) {
 set name String on your editText widget.
} 

【讨论】:

    【解决方案4】:

    您可以使用共享偏好对象将edittext值的值保存在用户手机中。当代码第二次执行时,您只需检查共享首选项中的变量。如果变量不为空,则从中获取值并使用 setText() 方法设置该字符串。

    【讨论】:

      猜你喜欢
      • 2016-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多