2013-10-25 38 views
0

我遇到Android Edittext问题。 我有一个表格。如果验证不成功,我用setError()方法给edittext设置一个错误。Android Edittext错误在屏幕旋转后消失

但是,在某些设备上,当我旋转屏幕时,错误消失。

我看到处处都是,但似乎无法找到解决方案。

任何想法?

+0

您可以将状态变量设置为您保存在onSaveInstanceState()中的edittext,并在onCreate()方法中检索并将错误(或不是)重置为edittext。 – Mikel

回答

0

当您旋转设备时,您的活动将被重新创建,活动的前一个实例将被销毁并创建新的活动实例,然后创建所有活动生命周期的方法。检查您在EditText中显示错误的方法。

0

你有没有在你的清单下面试过..代码

<activity 
     android:name=".YourActivity" 
      android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" android:windowSoftInputMode="adjustPan"/> 
0

尝试增加android:configChanges="orientation|keyboardHidden"属性在清单中的活动。

0

我遇到同样的问题。我认为android的视图对象会处理它们,但它们不会。因此,我认为解决方案是将这些信息保存在onSaveInstanceState(Bundle)中,并将其恢复到onRestoreInstanceState(Bundle)中(例如,如果您正在使用Activity的子类)。下面是一个例子来说明: 假设您正在使用Activity的子类,并且您有一个包含两个编辑文本的登录表单,一个用于电子邮件,一个用于密码。

EditText mEmail = null; 
    EditText mPassword = null; 

    @Override 
    protected void onRestoreInstanceState(Bundle savedInstanceState) { 
     super.onRestoreInstanceState(savedInstanceState); 
     if (savedInstanceState != null) { 
      mEmail.setError(savedInstanceState.getString("email")); 
      mPassword.setError(savedInstanceState.getString("password")); 
     } 
    } 

    @Override 
    protected void onSaveInstanceState(Bundle outState) { 
     super.onSaveInstanceState(outState); 
     outState.putString("email", mEmail.getError()); 
     outState.putString("password", mPassword.getError()); 
    }