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