0

我有一个文本字段,指示用户选择的日期。我还为用户提供了一个按钮来更改当前日期。我面临的问题如下。

1. 在 Oncreate 方法中,我将文本字段设置为当前日期。创建活动时,它会显示当前日期。

  1. 我使用按钮并将日期更改为其他日期。

这一切都很好..

但是当我旋转设备时,再次调用 oncreate 并将文本字段更改为当前字段。我希望文本字段保留用户选择的一个。

请在这个问题上帮助我。有什么办法可以防止这种情况吗?

4

2 回答 2

3

屏幕旋转会杀死您的活动并导致整个生命周期重新启动。发生这种情况时,onCreate 仍然可以访问启动 Activity 的原始意图,并且某些小部件可能会保留它们的某些状态(例如 EditTexts),但您的大部分动态 Activity 数据将丢失。为防止这种情况,请考虑使用该onSaveInstanceState方法。这将允许您在旋转杀死屏幕之前将任何重要的数据成员放入一个 Bundle 中。然后将此 Bundle 作为参数传递给您的 onCreatesavedInstanceState. 以下是有关此的开发文档:

http://developer.android.com/reference/android/app/Activity.html#onSaveInstanceState%28android.os.Bundle%29

在您的情况下,您需要通过将其作为额外的 Bundle 放入来保存您的日期值。然后,在 onCreate 中,检查 savedInstanceState 是否不为 null,表示它包含您的日期并进行相应处理。此外,请确保如果您稍后在活动生命周期中为此文本设置默认值,它不会破坏您的检索日期。

于 2012-05-22T17:09:40.250 回答
2

您需要在旋转之前保存变量。我认为最好的选择是使用 Application 类作为保存变量并在 onPause() 函数中执行此操作的地方。

于 2012-05-22T17:00:52.813 回答