2014-01-05 1 views
0

Мое приложение функционирует следующим образом: изображение, которое можно увидеть в портретном или ландшафтном режиме, и пользователь может прокручивать изображения, чтобы изменить изображение в изображении. Проблема заключается в том, что если вы проведите пальцем, чтобы выбрать другое изображение, а затем поверните устройство в альбомное, оно отобразит исходное изображение, выбранное пользователем, а не текущее изображение, отображаемое в изображении. Мне интересно, как я могу получить идентификатор текущего изображения до его поворота, а затем установить его, когда он находится в ландшафте. Будет ли это в методе 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 
} 

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

+0

Я понимаю логику, теперь мне просто нелегко получить ссылочную ссылку из imageView. Я попытался использовать imageView.getId(), но вернулся 0. Есть ли функция для получения идентификатора drawable из imageView? Я надеюсь получить что-то вроде R.drawable.imageX – ez4nick

+0

, используя getDrawable, приводит к этому: putInt (String, int) в Bundle нельзя применить к (String, android.graphics.drawable.Drawable) – ez4nick

+0

Да, вы не можете легко получить Идентификатор, который можно извлечь после факта. Вместо этого попробуйте следить за тем, какая отображаемая в данный момент информация отображается, сохраняя ссылку на нее в момент установки drawable. EDIT: отображаются ли изображения в папке с выделенными ресурсами или они являются файлами? Если они не находятся в папке с выделенными ресурсами, у них не будет такого идентификатора, который вы ищете. Если они, например, являются файлами, попробуйте сохранить имя пути. – Quercus

0

Попробуйте добавить android:configChanges="orientation" ниже <activity> в вашем AndroidManifest.xml

+0

Пробовал это, и он не работал, все еще возвращается к исходному изображению, выбранному – ez4nick

 Смежные вопросы

  • Нет связанных вопросов^_^