Android / Monodroid中的旋转数据重置

时间:2012-05-22 16:50:55

标签: android xamarin.android

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

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

  1. 我使用按钮并将日期更改为另一个日期。
  2. 这一切都很好......

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

    请帮我解决这个问题。有什么方法可以阻止这种情况吗?

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:2)

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