Мое приложение функционирует следующим образом: изображение, которое можно увидеть в портретном или ландшафтном режиме, и пользователь может прокручивать изображения, чтобы изменить изображение в изображении. Проблема заключается в том, что если вы проведите пальцем, чтобы выбрать другое изображение, а затем поверните устройство в альбомное, оно отобразит исходное изображение, выбранное пользователем, а не текущее изображение, отображаемое в изображении. Мне интересно, как я могу получить идентификатор текущего изображения до его поворота, а затем установить его, когда он находится в ландшафте. Будет ли это в методе onPause, или есть метод onConfigurationChanged, который я мог бы использовать для этого?Изменение ориентации ориентации экрана
ответ
Смотрите здесь: 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
Пробовал это, и он не работал, все еще возвращается к исходному изображению, выбранному – ez4nick
Я понимаю логику, теперь мне просто нелегко получить ссылочную ссылку из imageView. Я попытался использовать imageView.getId(), но вернулся 0. Есть ли функция для получения идентификатора drawable из imageView? Я надеюсь получить что-то вроде R.drawable.imageX – ez4nick
, используя getDrawable, приводит к этому: putInt (String, int) в Bundle нельзя применить к (String, android.graphics.drawable.Drawable) – ez4nick
Да, вы не можете легко получить Идентификатор, который можно извлечь после факта. Вместо этого попробуйте следить за тем, какая отображаемая в данный момент информация отображается, сохраняя ссылку на нее в момент установки drawable. EDIT: отображаются ли изображения в папке с выделенными ресурсами или они являются файлами? Если они не находятся в папке с выделенными ресурсами, у них не будет такого идентификатора, который вы ищете. Если они, например, являются файлами, попробуйте сохранить имя пути. – Quercus