歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

制作Android二維碼時產生的錯誤總結

現在很多應用都需要二維碼,因此,在搜集資料中發現了發現一個以Apache開源的 ZXing項目。而在學習中也發現了一些錯誤。

(Zxing是Google提供的關於條碼(一維碼、二維碼)的解析工具,提供了一系列條形碼以及二維碼的生成與解析的方法);

第一個,

最開始我學習的是1.6的ZXing版本,結果接觸到了一個錯誤,編譯一下項目在values目錄下的strings的xml文件裡面有個

<string name="preferences_custom_product_search_summary">Use %s as a placeholder for the product ID, and %f for format</string>

標簽錯誤,會發現報錯,“ Multiple substitutions specified in non-positional format; did you mean to add the formatted="false" attribute?”之類的。打開raw 下的Values 發現錯誤是在一個<String>上。這裡把 “preferences_custom_product_search_summary” 裡的  %s  %f  全部都改成  %1$s  %1$f(因為我們用不到多國語言,建議只保留默認的Value ,其他全部刪除)。

原因:由於新的SDK采用了新版本的aapt(Android項目編譯器),這個版本的aapt編譯起來會比老版本更加的嚴格,然後在Android最新的開發文檔的描述String的部分,已經說明如何去設置 %s 等符號

“使用的String.Format(字符串,對象...),如果你需要格式化字符串,然後你就可以這樣做把你的格式參數中的字符串資源。例如,用下面的資源:

<string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string>

在這個例子中,格式字符串有兩個參數:%1 $ S是一個字符串,%2 $ d是一個十進制數。您可以格式化字符串,還要爭拗從您的應用程序...“

經過以上步驟後項目應該就可以運行了。

不過之後,在我下了2.1之後,ZXing的作者可能已經意識到這個問題,所以在隨後的2.1ZXing版本裡面沒有這個問題了。

詳細請看: http://www.linuxidc.com/Linux/2013-03/81604.htm

不過,1.6很多地方沒有隨後的2.1好,2.1優化升級了許多地方。

Copyright © Linux教程網 All Rights Reserved