2010-08-10 37 views
1

我有一個Android應用程序,允許用戶選擇已經拍攝的照片。一旦用戶選擇了一張照片,我就可以獲取該照片的URI信息,使用該信息創建一個位圖,然後在ImageView中設置位圖。這一切都很好。ANDROID ACTION_VIEW顯示來自URI的圖像錯誤

然後我給用戶選擇要查看的圖片。當用戶選擇查看圖片時,我啓動ACTION_VIEW意圖,傳遞URI數據。

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

正如你所看到的,這是非常簡單的代碼,沒有什麼特別的。問題是,當我在運行Android 2.1的Droid上運行此代碼時,大約有10或6次出現,應用程序將顯示正確的圖片。但其他3或4次,我看到錯誤的圖片。此外,每次顯示錯誤的圖片時,其總是顯示相同的錯誤圖片。事實上,大多數時候我看到正確的圖片讓我相信我在代碼中所做的一切都很好,所以任何人都可以告訴我,如果您之前看到過這個問題,更好的解決方案是什麼?

這裏是我在我的Droid的觀察,當我運行這個確切的序列(注:圖片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,我設置了基於onCreate()中的URI數據的ImageView,並且ImageView中顯示的圖像始終是正確的圖像。直到我真正決定使用ACTION_VIEW來查看圖像時,我纔看到奇怪的行爲。而且我知道這不是關於這兩張照片的具體內容。我在過去使用其他照片觀察了此行爲,並得到了相同的行爲。

回答

0

首先,我會調試/記錄pictureUri的值,當它最初由用戶選擇時,並且在您將它推入ACTION_VIEW意圖之前,看看它是否是您期望它在這些地方。聽起來好像在用戶選擇一張圖片後,你在本地存儲了uri,然後再次抓取它以啓動這個意圖。因此,也許你

  • 存儲在正確的位置
  • 存儲在一個不正確的地方
  • 由不正確的地方抓住了「拯救」 URI正確的URI隨機不正確的URI。

沒有更多的代碼(如何保存和恢復uris)很難說,但這是我開始尋找的地方。

+0

嗨喬希,我認爲URI數據很好。在onCreate中,我打開了存儲URI數據的數據庫,並根據該數據設置了圖片。所以,當我在縱向和橫向之間切換時,活動將被銷燬,onCreate再次調用,從數據庫中獲取數據。 在任何情況下,我發佈我的問題後,我做了一些代碼清理,真的只是通過並堵塞任何潛在的內存泄漏,突然間我再也看不到問題了。我不知道該怎麼做,但問題不再存在。 – Michael 2010-08-13 00:04:11

+0

真棒,很高興聽到它不再是一個問題。 – Josh 2010-08-13 14:47:09

+0

我也是!再次感謝您的建議。 – Michael 2010-08-13 15:20:14