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

问题描述:

我使用动态字段验证制作登录表单。我有3个字段的用户名,电子邮件&密码&所有这些字段都是必需的。当字段长度= 0,I设置错误android:在更改方向上保存错误状态

editText.setError(getText(R.string.cannot_be_blank)); 

这个代码工作正常,但是当我改变了方向,所有的错误消失 如何保存错误状态?

谢谢。

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

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

因此,你需要重写onSaveInstanceState方法在你的活动如下(保存错误状态):

@Override 
protected void onSaveInstanceState(Bundle outState) { 
    outState.putBoolean("errorOccurred", errorState); 
    super.onSaveInstanceState(outState); 
} 

然后在您的onCreate方法检查,如果savedInstateState捆绑为空或不是。基于该文本编辑值的错误消息

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

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

使用SharedPreferences存储和恢复您的状态和TextEdit值。

+0

它是更好的onResume重新评估,而不是保存状态......如果没有,你可以用下面的代码检索值出来的 – pzulw

当您打开设备时会发生什么,您的Activity将贯穿其整个生命周期,以便处理布局必须从纵向变为横向的事实。

您应该查看有关如何Handle Runtime Changes的开发人员文档。