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

时间:2011-12-01 13:45:28

标签: android orientation android-edittext savestate

我使用动态字段验证创建登录表单。我有3个字段用户名,电子邮件和&密码&所有这些领域都是必需的。当字段长度= 0时,我设置错误

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

并且此代码工作正常,但是当我更改方向时,所有错误都会消失 如何保存错误状态?

感谢。

3 个答案:

答案 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