0

我在使用 Android Edittext 时遇到问题。我有一个表格。如果验证不成功,我使用 setError() 方法为 edittext 设置错误。

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

我到处寻找,但似乎找不到解决方案。

有任何想法吗 ?

4

4 回答 4

0

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

于 2013-10-25T09:23:17.087 回答
0

您是否在清单中尝试过以下代码..

 <activity
      android:name=".YourActivity"
             android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" android:windowSoftInputMode="adjustPan"/>
于 2013-10-25T09:28:30.563 回答
0

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

于 2013-10-25T09:29:43.757 回答
0

我有同样的问题。我认为android的视图对象会在他们的on上处理这个,但他们没有。所以我认为解决方案是将这些信息保存在 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());
    }
于 2015-07-19T11:47:41.873 回答