我有一个文本字段,指示用户选择的日期。我还为用户提供了一个按钮来更改当前日期。我面临的问题如下。
1. 在 Oncreate 方法中,我将文本字段设置为当前日期。创建活动时,它会显示当前日期。
- 我使用按钮并将日期更改为其他日期。
这一切都很好..
但是当我旋转设备时,再次调用 oncreate 并将文本字段更改为当前字段。我希望文本字段保留用户选择的一个。
请在这个问题上帮助我。有什么办法可以防止这种情况吗?
我有一个文本字段,指示用户选择的日期。我还为用户提供了一个按钮来更改当前日期。我面临的问题如下。
1. 在 Oncreate 方法中,我将文本字段设置为当前日期。创建活动时,它会显示当前日期。
这一切都很好..
但是当我旋转设备时,再次调用 oncreate 并将文本字段更改为当前字段。我希望文本字段保留用户选择的一个。
请在这个问题上帮助我。有什么办法可以防止这种情况吗?
屏幕旋转会杀死您的活动并导致整个生命周期重新启动。发生这种情况时,onCreate 仍然可以访问启动 Activity 的原始意图,并且某些小部件可能会保留它们的某些状态(例如 EditTexts),但您的大部分动态 Activity 数据将丢失。为防止这种情况,请考虑使用该onSaveInstanceState
方法。这将允许您在旋转杀死屏幕之前将任何重要的数据成员放入一个 Bundle 中。然后将此 Bundle 作为参数传递给您的 onCreatesavedInstanceState.
以下是有关此的开发文档:
在您的情况下,您需要通过将其作为额外的 Bundle 放入来保存您的日期值。然后,在 onCreate 中,检查 savedInstanceState 是否不为 null,表示它包含您的日期并进行相应处理。此外,请确保如果您稍后在活动生命周期中为此文本设置默认值,它不会破坏您的检索日期。
您需要在旋转之前保存变量。我认为最好的选择是使用 Application 类作为保存变量并在 onPause() 函数中执行此操作的地方。