我在使用 Android Edittext 时遇到问题。我有一个表格。如果验证不成功,我使用 setError() 方法为 edittext 设置错误。
但是,在某些设备上,当我旋转屏幕时,错误消失了。
我到处寻找,但似乎找不到解决方案。
有任何想法吗 ?
我在使用 Android Edittext 时遇到问题。我有一个表格。如果验证不成功,我使用 setError() 方法为 edittext 设置错误。
但是,在某些设备上,当我旋转屏幕时,错误消失了。
我到处寻找,但似乎找不到解决方案。
有任何想法吗 ?
当您旋转设备时,您的活动将被重新创建,先前的活动实例被销毁并创建新的活动实例,然后是活动生命周期的所有方法。检查您在 EditText 中显示错误的方法。
您是否在清单中尝试过以下代码..
<activity
android:name=".YourActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" android:windowSoftInputMode="adjustPan"/>
尝试android:configChanges="orientation|keyboardHidden"
在清单中为您的活动添加属性。
我有同样的问题。我认为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());
}