2014-02-06 4 views
7

Я хочу проверить BitmapDescriptor на null.Check BitmapDescriptor for null

Документация BitmapDescriptorFactory.fromAsset гласит:

Возвращает BitmapDescriptor, который был загружен из актива или нулевое значение, если не удалось загрузить.

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

Несмотря на это, я не могу поймать BitMapDescriptor в нулевое состояние - даже тогда, когда я прохожу имя файла, который не существует, метод fromAsset не возвращает нуль.

+0

Вы пробовали отладить его? Я имею в виду: вы поставили точку останова на этой линии, чтобы увидеть, что она на самом деле возвращается? – DigCamara

ответ

1

Возможно, метод fromAsset не возвращает значение null, но, возможно, возвращает то же самое, что и defaultMarker(). (т. е. неверная документация)

Я бы проверил, имеет ли значение, которое вы получаете для (предположительно несуществующего) актива, либо '==', либо .Equals defaultMarker(). Это может быть то, как вы обнаруживаете несуществующий актив.

+0

burntsugar, и я обнаружил, что использование возвращенного BitmapDescriptor заставляет его взорваться дальше по дорожке, предполагая, что, хотя это экземпляр BitmapDescriptor, он не поддерживается действительным растровым изображением. класс является «дескриптором» и не имеет методов. мы смогли обнаружить (не) существование ресурса, загрузив поток напрямую с помощью другого метода, а затем вызывая fromAsset(), если InputStream! = null. это сработало, но его работа вокруг. я могу только предположить, что doco ошибается. попытка загрузить несуществующий ресурс должна быть достаточной для того, чтобы он был закрыт раньше. – slipperyseal

0

Я нашел, в отличие от документации, BitmapDescriptorFactory.fromAsset (String) не возвращает значение null, если указанный ресурс не существует. В настоящее время я выполняю работу, где я предварительно загружаю список активов, которые существуют с помощью AssetManager.list (""). Затем для рассматриваемого имени актива я просматриваю кешированный список активов, чтобы определить, существует ли указанный актив.

Это был наименее ресурсоемкий подход, который я мог бы использовать, поскольку я не мог зависеть от нулевого возврата, когда актива не существовало.