android string.xml %問題。


Multiple annotations found at this line:
    - error: Multiple substitutions specified in non-positional format; did you mean to add the formatted="false" 
     attribute?
    - error: Unexpected end tag string

 

 

反覆檢查後發現是string.xml中的 % 致使編譯失敗,

這是因爲新的SDK採用了新版本的aapt(Android項目編譯器),這個版本的aapt編譯起來會比老版本更加的嚴格,而後在Android最新的開發文檔的描述String的部分,已經說明了 如何去設置 %s 等符號,下面是文檔片斷: If you need to format your strings using String.format(String, Object...) , then you can do so by putting your format arguments in the string resource. For example, with the following resource: 若是你須要使用 String.format(String, Object...) 來格式化你的字符串,你能夠把格式化參數放在你的字符串中,參見下面的例子: <string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string> In this example, the format string has two arguments: %1$s is a string and %2$d is a decimal number. You can format the string with arguements from your application like this: 在這個例子中,這個格式化的字符串有2個參數, %1$s是個字符串 %2$d 是個浮點數,你能夠在你的程序中按照下面的方法來根據參數來格式化字符串: Resources res = getResources(); String text = String.format(res.getString(R.string.welcome_messages), username, mailCount); 那麼根據例子上說的我須要把%s換成%1$s才行了,修改後編譯經過,程序成功啓動。 問題補充: 有讀者問如何在<string></string>中使用%號 有兩個辦法可供選擇 1.用%%來表示1個%,和轉意符號 \ 的用法相同 2.若是你的字符串不須要格式化,能夠在你的<string 標籤上增長一個屬性:formatted="false"例如 <string name="test" formatted="false">% test %</string> 便可
相關文章
相關標籤/搜索