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