Intereting Posts
Android: не удается выполнить это действие после onSaveInstanceState Как можно использовать API-интерфейсы для Android в приложениях, отличных от камеры? Исправление автозагрузки в студии Android Могу ли я получить ширину и высоту файла изображения из uri в android? Как добавить дни в дату в android Как я могу получить разницу между двумя датами в android ?, проверял каждую вещь и сообщение Совет: реализация SlidingMenu на Android (J. Feinstein) Файлы Jar в папке libs не используются в Android Gradle build Android отправляет почтовые запросы на сервер django csrf failing Включить службы определения местоположения для Android, если пользователь не выбрал параметр «Никогда» Повторная упаковка .jar-s в Android .aar library FileNotFoundException в файле proguard-rules.pro Загрузка с помощью spinner sqlite с текстом и значением Проблемы рендеринга Исключение, возникающее при рендеринге: com.android.ide.common.rendering.api.LayoutlibCallback ActivityTestRule – как вызвать код перед вложением приложения

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

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

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 (например, когда меняется ориентация).