2014年8月22日 星期五

[Android] string.xml 的 錯誤訊息 error: Multiple substitutions specified in non-positional format; did you mean to add the formatted="false" attribute?

Android 中 的 String.xml 中

若要使用到 String.format() 的話

例如

想顯示 已經下載了 多少 bit 的 檔案  format 成 數字格式

String.format(getResources().getString(R.string.update_downloaded),currentSize ,totalSize);

String.xml 中

 <string name="update_downloaded">Downloaded %s bit  of %s  bit</string>

會出現錯誤訊息

error: Multiple substitutions specified in non-positional format; did you mean to add the formatted="false" attribute?




查了一下文章

若要在String.xml 中顯示  % 符號 則需要多加一個%  

<string name="update_downloaded">Downloaded %%s bit of %%s bit </string>

或是在 元素中加入 formatted="false" 屬性

這樣可以修正error  但是卻不是我想要的結果

因為這範例並沒有要顯示%百分比符號  

而是要 format 成 數字格式

查了一下 官方文件

http://developer.android.com/guide/topics/resources/string-resource.html#String

這個問題需要改成 %順序$格式 的方式表示
<string name="update_downloaded">Downloaded %1$s bit of %2$s bit </string>

修正成這樣就ok了



沒有留言:

張貼留言