我制作了一个带有动态字段验证的登录表单。我有 3 个字段用户名、电子邮件和密码,所有这些字段都是必需的。当字段长度= 0时,我设置错误
editText.setError( getText(R.string.cannot_be_blank) );
这段代码工作正常,但是当我改变方向时,所有错误都消失了如何保存错误状态?
谢谢。
我制作了一个带有动态字段验证的登录表单。我有 3 个字段用户名、电子邮件和密码,所有这些字段都是必需的。当字段长度= 0时,我设置错误
editText.setError( getText(R.string.cannot_be_blank) );
这段代码工作正常,但是当我改变方向时,所有错误都消失了如何保存错误状态?
谢谢。
当方向改变时,框架将通过调用重新创建 Activity onCreate(Bundle savedInstanceState)
。如果在您的 Activity 中重写该方法,则在切换方向之前onSaveInstanceState(Bundle outState)
将调用该方法。
您可以将错误状态保存在传递给onSaveInstanceState
方法的 Bundle 中。此捆绑包作为捆绑包传递给您的onCreate()
方法savedInstanceState
。
因此,您需要onSaveInstanceState
按如下方式覆盖 Activity 中的方法(保存错误状态):
@Override
protected void onSaveInstanceState(Bundle outState) {
outState.putBoolean("errorOccurred", errorState);
super.onSaveInstanceState(outState);
}
然后在您的onCreate
方法中检查savedInstateState
Bundle 是否为空。如果没有,您可以使用以下代码从中检索值:
boolean errorOccurred = false;
if (savedInstanceState != null) {
errorOccurred = savedInstanceState.getBoolean("errorOccurred");
}
当方向改变时,Android 框架会销毁 Activity,然后为新的方向创建一个新的。所以你所有的状态都丢失了。
使用 SharedPreferences 存储和恢复您的状态和 TextEdit 值。
当您转动设备时会发生什么,您会在Activity
其生命周期中运行,以处理布局必须从纵向变为横向的事实。
您应该查看有关如何处理运行时更改的开发人员文档。