0

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

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

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

谢谢。

4

3 回答 3

1

当方向改变时,框架将通过调用重新创建 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方法中检查savedInstateStateBundle 是否为空。如果没有,您可以使用以下代码从中检索值:

boolean errorOccurred = false;  
if (savedInstanceState != null) {
    errorOccurred = savedInstanceState.getBoolean("errorOccurred"); 
}
于 2011-12-01T14:23:10.077 回答
-1

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

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

于 2011-12-01T13:49:51.887 回答
-1

当您转动设备时会发生什么,您会在Activity其生命周期中运行,以处理布局必须从纵向变为横向的事实。

您应该查看有关如何处理运行时更改的开发人员文档。

于 2011-12-01T13:51:13.577 回答