我正在创建一个应用程序,要求用户在Main_Activity.xml中输入名称,电子邮件,日期等。然后,用户将单击“提交”。输入的数据将显示在confirm.xml中。在confirm.xml中,用户需要验证输入的数据,如果要编辑输入的数据,他们将单击后退按钮再次编辑数据。我尝试这样做但是一旦我点击后退按钮,我在editText字段中输入的所有数据都消失了。我想保留我在MainActivity.xml的editText字段中输入的数据,因此我只能更改一些需要编辑的字段。我怎样才能做到这一点?谢谢。
答案 0 :(得分:0)
您可以覆盖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。
答案 1 :(得分:0)
当您输入数据的活动被销毁时,可能会发生这种情况。你如何打开新的确认活动?这可能是包含错误的代码部分。
如果您在打开新活动时致电finish()
,则会销毁活动并清除EditText
中的数据。
要打开新活动并保留当前活动的数据,您只需在startActivity(...)
之后拨打finish()
即可。
Intent intent = new Intent(context, ConfirmationActivity.class);
startActivity(intent);
无论如何,android可以销毁活动以在需要时释放内存。当您打开另一个需要内存但应用程序使用内存的应用程序时会发生这种情况,因此系统会破坏您的活动,并且您可以使用Bundles
将数据保存到磁盘上并恢复它们。 / p>
我建议您阅读本指南https://developer.android.com/guide/components/activities/activity-lifecycle.html
答案 2 :(得分:0)
您可以将所有信息保存为字符串,如私有字符串名称; 当用户输入名称并再次使用时,写入/设置此名称,如下所示:
if(name != null && !name.toString().isEmpty()) {
set name String on your editText widget.
}
答案 3 :(得分:0)
您可以使用共享首选项对象在用户手机中保存edittext值的值。当代码第二次执行时,您只需检查共享首选项中的变量。如果variable不为null,则从中获取值并使用 setText()方法设置该字符串。