2010-08-10 3 views
1

У меня есть приложение для Android, которое позволяет пользователю выбрать фотографию, которая уже была сделана. Когда пользователь выбирает фотографию, я захватываю информацию URI для этой фотографии, использую эту информацию для создания растрового изображения, а затем устанавливаю растровое изображение в ImageView. Все это прекрасно работает.ANDROID ACTION_VIEW показывает неправильное изображение из URI

Затем я предоставляю пользователю возможность выбрать изображение для просмотра. Когда пользователь выбирает просмотр изображения, я запускаю намерение ACTION_VIEW, передавая данные URI.

Intent intent = new Intent(Intent.ACTION_VIEW, pictureUri); 
startActivity(intent); 

Как вы можете видеть, это очень простой код, ничего особенного не происходит. Проблема в том, что когда я запускаю этот код на своем Droid под управлением Android 2.1, примерно в 6 или 7 раз из 10, приложение отобразит правильное изображение. Но другие 3 или 4 раза, мне показывают неправильную картину. Кроме того, каждый раз, когда отображается неправильное изображение, всегда отображается одинаковое неправильное изображение. Тот факт, что я вижу правильную картинку большую часть времени, заставляет меня поверить, что все, что я делаю в коде, прекрасно, так может кто-нибудь сказать мне, если вы видели эту проблему раньше, и еще лучше, есть ли решение?

Вот точная последовательность, я наблюдаю на моем Droid, когда я запускаю этот (Примечание: Image URI уже сохранен, прежде чем начать свою деятельность):

- I choose "View Photo" in the Activity 
- When things work, I get taken to the gallery and shown image 74 
- Each time things do not work, I get shown image 82 

Имейте в виду, что, когда я начинаю активность с уже сохраненным URI (полученным из базы данных), я установил ImageView на основе данных URI в onCreate(), а изображение, отображаемое в ImageView, ВСЕГДА правильное изображение. Пока я не решил просмотреть изображение с помощью ACTION_VIEW, я вижу странное поведение. И я знаю, что это не что-то конкретное об этих 2 фотографиях. Я наблюдал это поведение, используя другие фотографии в прошлом, и получил такое же поведение.

ответ

0

Во-первых, я бы отлаживал/регистрировал значение pictureUri как при его первоначальном выборе пользователем, так и перед тем, как вы введете его в свое намерение ACTION_VIEW, чтобы убедиться, что это то, что вы ожидаете от него в тех местах. Похоже, что после того, как пользователь выберет pic, вы храните uri локально и снова захватываете его, чтобы начать свое намерение. Так что, может быть, вы

  • хранение случайного неправильный URI в правильном месте
  • хранящего правильный URI в неправильном месте
  • захвата «спасенную» URI из неправильного места.

Без дополнительного кода (как сохранить и восстановить uris) трудно сказать, но вот где я начну искать.

+0

Привет, Джош, я думаю, что данные URI были в порядке. В onCreate я открыл свою базу данных, где хранятся данные URI, и я установил изображение на основе этих данных. Поэтому, когда я переключался между портретом и ландшафтом, активность будет уничтожена, а функция onCreate снова будет перехвата данных из базы данных. В любом случае, после того, как я разместил свой вопрос, я немного очистил код, просто пропустил и подключил все, что было потенциальной утечкой памяти, и вдруг я больше не вижу проблемы. Я не уверен, что с этим делать, но проблема больше не существует. – Michael

+0

Удивительный, рад слышать, что это уже не проблема. – Josh

+0

Да, я тоже! Еще раз спасибо за предложения. – Michael

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