2014-02-06 34 views
7

我想檢查BitmapDescriptor爲空。檢查BitmapDescriptor爲空

BitmapDescriptorFactory.fromAsset的文檔指出:

返回 這是從資產加載或NULL如果失敗BitmapDescriptor加載。

BitmapDescriptor bd = BitmapDescriptorFactory.fromAsset("markerimages/filename.png"); 
    if (bd == null) { 
     // doSomething... 
    } 

儘管這樣,我無法趕上BitMapDescriptor空狀態 - 甚至當我傳遞一個不存在的文件名,fromAsset方法不返回空。

+0

你試過調試過嗎?我的意思是:你是否在該行上放置了一個斷點來查看它實際返回的內容? – DigCamara

回答

1

可能fromAsAsset方法不返回null,但可能返回與defaultMarker()返回相同的結果。 (即文檔是錯誤的)

我會檢查您爲(估計不存在)資產獲取的值是'=='還是.Equals defaultMarker()。這可能是您如何檢測不存在的資產。

+0

burntsugar,我發現使用返回的BitmapDescriptor會導致它沿着軌道進一步爆炸,這表明雖然它是一個BitmapDescriptor實例,但它不支持有效的位圖。該類是一個「句柄」,沒有方法。我們能夠通過直接使用另一種方法加載流來檢測資源的(非)存在,然後在InputStream!= null時調用fromAsset()。這工作,但它的工作。我只能假設多克是錯的。試圖加載一個不存在的資源必須足夠的一個角落的情況下,它沒有被拿起以前。 – slipperyseal

0

我發現,與文檔相反,如果指定的資產不存在,則BitmapDescriptorFactory.fromAsset(String)不會返回null。我目前正在實施一項工作,在該工作中我預先加載了使用AssetManager.list(「」)存在的資產列表。然後,對於有問題的資產名稱,我搜索資產的緩存列表以確定指定的資產是否存在。

這是資源密集程度最低的方法,因爲我不能依賴資產不存在時的空回報。