Android: сохранить состояние ошибки при изменении ориентации - PullRequest
0 голосов
/ 01 декабря 2011

Я делаю форму входа с проверкой динамического поля.У меня есть 3 поля: имя пользователя, адрес электронной почты и пароль, и все эти поля обязательны для заполнения.Когда длина поля = 0, я устанавливаю ошибку

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

и этот код работает нормально, но когда я меняю ориентацию, все ошибки исчезают. Как сохранить состояние ошибки?

Спасибо.

Ответы [ 3 ]

1 голос
/ 01 декабря 2011

Когда ориентация меняется, каркас воссоздает действие, вызывая onCreate(Bundle savedInstanceState).Перед переключением в ориентацию будет вызван метод onSaveInstanceState(Bundle outState), если он переопределен в вашей активности.

Вы можете сохранить состояние ваших ошибок в Bundle, переданном методу onSaveInstanceState.Этот пакет передается в ваш метод onCreate() как savedInstanceState Bundle.

Поэтому вам необходимо переопределить метод onSaveInstanceState в своей деятельности следующим образом (сохраняя состояние ваших ошибок):

@Override
protected void onSaveInstanceState(Bundle outState) {
    outState.putBoolean("errorOccurred", errorState);
    super.onSaveInstanceState(outState);
}

Затем в вашем методе onCreate проверьте, является ли savedInstateState Bundle нулевым или нет.Если нет, вы можете извлечь значения из него с помощью следующего кода:

boolean errorOccurred = false;  
if (savedInstanceState != null) {
    errorOccurred = savedInstanceState.getBoolean("errorOccurred"); 
}
0 голосов
/ 01 декабря 2011

Когда вы включаете устройство, происходит то, что ваш Activity проходит жизненный цикл, чтобы справиться с тем фактом, что компоновка должна меняться с портретной на ландшафтную.Документы для разработчиков о том, как обрабатывать изменения времени выполнения .

0 голосов
/ 01 декабря 2011

При изменении ориентации платформа Android уничтожает активность, а затем создает новую для новой ориентации.Таким образом, все ваше состояние потеряно.

Используйте SharedPreferences для хранения и восстановления вашего состояния и значений TextEdit.

...