Intereting Posts
Как установить изображение в imageView, используя путь к файлу в android ListView не расширяется внутри NestedScrollView MediaCodec и 24 бит PCM Автоматическое очищение кеша пользователей при обновлении приложения в android SHA-1 отпечаток клеверного сертификата Android-эмулятор (Android Studio) Кнопка «Главная» не работает и дает logcat – I / WindowManager: не запускается активность, поскольку выполняется настройка пользователя Почему возможно написать булевский массив в посылку, но не логический? Исходный код Android: дублирующий класс Организация Strings.xml Как мы можем обрабатывать ошибки HTTP, например: 401, 403, 404, 500 в android.webview? Панель действий не отображает значки действий Обновление списка в фрагменте из широковещательного приемника Библиотеки клиентов WebSocket для Java (Android) Пользовательское правило Lint, не указанное в студии eclipse / android Как получить тело Response при возникновении ошибки при использовании Retrofit 2.0 Observables

Потеря данных при повороте экрана

У меня есть небольшая ошибка в моем приложении. Когда пользователь поворачивает экран, я теряю часть данных в своей деятельности. Кто-нибудь, у кого есть идея, почему это происходит?

Solutions Collecting From Web of "Потеря данных при повороте экрана"

По умолчанию, когда экран повернут, ваша активность будет убита и перезапущена. Чтобы убедиться, что данные не потеряны, вам необходимо правильно сохранить и восстановить свои данные с помощью методов жизненного цикла. См. Сохранение постоянного состояния .

 //Use onSaveInstanceState(Bundle) and onRestoreInstanceState @Override public void onSaveInstanceState(Bundle savedInstanceState) { // Save UI state changes to the savedInstanceState. // This bundle will be passed to onCreate if the process is // killed and restarted. savedInstanceState.putBoolean("MyBoolean", true); savedInstanceState.putDouble("myDouble", 1.9); savedInstanceState.putInt("MyInt", 1); savedInstanceState.putString("MyString", "Welcome back to Android"); // etc. super.onSaveInstanceState(savedInstanceState); } //onRestoreInstanceState @Override public void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); // Restore UI state from the savedInstanceState. // This bundle has also been passed to onCreate. boolean myBoolean = savedInstanceState.getBoolean("MyBoolean"); double myDouble = savedInstanceState.getDouble("myDouble"); int myInt = savedInstanceState.getInt("MyInt"); String myString = savedInstanceState.getString("MyString"); } 

Таким образом вы сохраняете свои данные, когда система удаляет их при вращении.

Самое быстрое решение, которое я нашел, это: http://developer.android.com/guide/topics/resources/runtime-changes.html#HandlingTheChange

Вот вариация на полезный ответ @ jaisonDavis:

 int myInt; String myString; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_verses); if (savedInstanceState == null) { Intent intent = getIntent(); myInt = intent.getIntExtra("MyIntIntentKey", DEFAULT_INT); myString = intent.getStringExtra("MyStringIntentKey", DEFAULT_STRING); } else { // savedInstanceState has saved values myInt = savedInstanceState.getInt("MyIntKey"); myString = savedInstanceState.getString("MyStringKey"); } } @Override public void onSaveInstanceState(Bundle savedInstanceState) { savedInstanceState.putInt("MyIntKey", myInt); savedInstanceState.putString("MyStringKey", myString); super.onSaveInstanceState(savedInstanceState); } 

В этом примере переменные инициализируются из Intent при первом создании активности, но после этого они инициализируются из savedInstanceState (например, когда меняется ориентация).