Моето приложение функционира по следния начин: imageView, който може да се вижда в портретна или пейзажна ориентация, и потребителят може да плъзга между изображенията, за да промени изображението в imageView. Проблемът е, че ако плъзнете, за да изберете различно изображение и след това завъртите устройството в пейзажен режим, то показва оригиналното изображение, избрано от потребителя, а не текущото изображение, което се показва в imageView. Чудя се как мога да получа идентификатора на текущото изображение, преди да бъде завъртяно, и след това да го задам, когато е в пейзаж. Ще бъде ли в метода onPause или има метод onConfigurationChanged, който мога да използвам за това?
Обработка на промени в ориентацията на екрана
Отговори (2)
Вижте тук: http://developer.android.com/training/basics/activity-lifecycle/recreating.html
Според документацията дейността се унищожава при смяна на ориентацията. За да запазите допълнителна информация за състоянието в такова събитие, можете да замените метода onSaveInstanceState() и да добавите двойки ключ-стойност към обекта на пакета, като така:
public void onSaveInstanceState(Bundle savedInstanceState){
savedInstanceState.putInt("CurrentImageId", [current image id here]);
super.onSaveInstanceState(Bundle savedInstanceState);
}
След това, когато приложението бъде възстановено след промяната на ориентацията, можете да извлечете идентификатора на текущото изображение, като замените метода onCreate(Bundle savedInstanceState) или onRestoreInstanceState(Bundle savedInstanceState):
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
int currentImageId = savedInstanceState.getInt("CurrentImageId");
//Set the current image here, after retrieving the id
}
Разбира се, не знам как точно идентифицирате вашите изображения, така че не мога да ви кажа как точно да зададете/извлечете идентификатора на текущото изображение.
Опитайте да добавите android:configChanges="orientation"
под <activity>
във вашия AndroidManifest.xml