2014-01-31 38 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