android:在更改方向时保存错误状态

android:在更改方向时保存错误状态,android,orientation,android-edittext,savestate,Android,Orientation,Android Edittext,Savestate,我制作了一个带有动态字段验证的登录表单。我有三个字段用户名、电子邮件和密码&所有这些字段都是必需的。当字段长度=0时,我设置了错误 editText.setError( getText(R.string.cannot_be_blank) ); 这段代码运行得很好,但是当我改变方向时,所有的错误都消失了 如何保存错误状态 谢谢。当方向更改时,Android框架会销毁该活动,然后为新方向创建一个新的活动。所以你所有的状态都消失了 使用SharedReferences来存储和恢复您的状态和文本编辑值

我制作了一个带有动态字段验证的登录表单。我有三个字段用户名、电子邮件和密码&所有这些字段都是必需的。当字段长度=0时,我设置了错误

editText.setError( getText(R.string.cannot_be_blank) );
这段代码运行得很好,但是当我改变方向时,所有的错误都消失了 如何保存错误状态


谢谢。

当方向更改时,Android框架会销毁该活动,然后为新方向创建一个新的活动。所以你所有的状态都消失了


使用SharedReferences来存储和恢复您的状态和文本编辑值。

当您打开设备时,您的
活动将贯穿其生命周期,以便处理布局必须从纵向更改为横向的事实


您应该看看开发人员文档,了解如何执行。

当方向更改时,框架将通过调用onCreate(Bundle savedInstanceState)
重新创建活动。在方向切换之前,如果在活动中重写了
onSaveInstanceState(Bundle outState)
方法,则将调用该方法

您可以在传递到
onSaveInstanceState
方法的包中保存错误的状态。此捆绑包作为
savedInstanceState
捆绑包传递给您的
onCreate()
方法

因此,您需要在活动中覆盖
onSaveInstanceState
方法,如下所示(保存错误状态):

然后在
onCreate
方法中检查
savedInstateState
捆绑包是否为空。如果没有,可以使用以下代码从中检索值:

boolean errorOccurred = false;  
if (savedInstanceState != null) {
    errorOccurred = savedInstanceState.getBoolean("errorOccurred"); 
}

对于基于TextEdit值的错误消息,最好在onResume中重新计算,而不是保存状态。。。
boolean errorOccurred = false;  
if (savedInstanceState != null) {
    errorOccurred = savedInstanceState.getBoolean("errorOccurred"); 
}