2014-01-31 2 views
0

У меня есть следующий строковый ресурс:Android string.Format метания UnknownFormatConversionException

<string formatted="false" name="residential_search_url">https://api.trademe.co.nz/v1/Search/Property/Residential.json?latitude_min=%f%26latitude_max=%f%26longitude_min=%f%26longitude_max=%f</string> 

Это время используется в деятельности по:

String residentialUrl = task.getSearchUrl(_map.getProjection().getVisibleRegion().latLngBounds,getString(R.string.residential_search_url)); 

И метод определяется как:

public String getSearchUrl(LatLngBounds bounds, String baseUrl){ 
     return String.format(baseUrl, 
       bounds.southwest.latitude, 
       bounds.northeast.latitude, 
       bounds.southwest.longitude, 
       bounds.northeast.longitude); 
    } 

Я продолжаю получать:

java.util.UnknownFormatConversionException: Conversion = l'' 

Я также попытался использовать %s вместо %f, и это не имело значения.

ответ

0

Мой исправление было использовать &amp;, чтобы избежать амперсанд, вместо %26.

0

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

http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#syntax

+0

Мне нужно избежать амперсандов в строке запроса. Как мне это сделать? Я думал, что это было 26%, но, видимо, нет? – codedog

+0

У меня получилось не так - оказалось, что он сбежал как '&'. Теперь он работает отлично. – codedog

+0

% 26 будет работать в большинстве ситуаций, только когда вы используете строку в качестве входных данных для того, что интерпретирует символы% в качестве спецификаторов формата. Похоже, вы избегали проблемы. – user3109924

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