2012-07-31 57 views
0

嗨希望這滿足了作爲一個良好的書面問題的標準。 我是新來的編程,我一直在試圖爲Android上的登山者編寫一個應用程序,告訴用戶他們應該根據他們目前的訓練時間進行攀爬。該應用程序要求用戶輸入他們的攀爬能力和他們的牆的長度。格式標誌轉換不匹配異常

我已經建立了使用SharedPrefences這與數字編輯文本字段和列表的喜好菜單。 最初我有一個類拋出異常,因爲我試圖使用編輯文本中的字符串作爲float/double/int(我試過這三個!)。

我已經使用轉換的字符串到雙Double = Double.valueof(StringFromPrefernce) 這解決了錯誤,但現在生產的錯誤java.util.FormatFlagsConversionMismatchException: %o does not support ' ',我還沒有能夠找到一個解決方案。

該應用程序允許用戶初次訪問偏好菜單,但一旦他們設置一些值的任何企圖訪問偏好菜單會產生這種強制關閉。

SOLUTION:

在我的preferences.xml我曾引用的字符串。該字符串包含一個負責關閉力量的%符號。刪除%符號解決了問題。

+0

顯然事情錯了,當你試圖去提交偏好。您可以發佈代碼,您正在閱讀編輯框中的用戶輸入值,並嘗試將其保存到SharedPrefs – 2012-07-31 23:24:37

+0

Hi Pavel,感謝您的幫助。我嘗試了你的建議,但我仍然接近一個力量。我已經發布了更多類似你問的代碼,希望你能告訴我爲什麼這是強制關閉。 – 2012-08-01 07:45:22

+0

您更新的代碼不包含提交SharedPrefs更改的實際過程。你確定異常是從'd = Double.valueof(StringFromPrefernce.trim());''調用?我認爲這發生在別的地方。你可以發佈你的其他代碼嗎? – 2012-08-01 16:44:08

回答

1

SOLUTION:

在我的preferences.xml我曾引用的字符串。該字符串包含一個負責關閉力量的%符號。刪除%符號解決了問題。

+2

您不需要刪除%,您可以用%%將其轉義。 – 2016-09-05 14:27:42

0

嘗試修正輸入字符串:

Double d = Double.valueof(StringFromPrefernce.trim()); 

這應該刪除從一開始就和你的字符串的結束不必要的空格。 也最好是與周圍的try/catch你的電話,以避免無效的輸入:

Double d = 0; 
try 
{ 
    d = Double.valueof(StringFromPrefernce.trim()); 
} 
catch(NumberFormatException e) 
{ 
    e.printStackTrace(); 
} 
9

似乎是Android的4的變化倍增您的字符串%符號似乎工作 - %現在看來,這樣的自我逃避與%%爲我做是一個轉義字符。

0

我漸漸因爲我使用的工具做自動翻譯。它正在放入% s而不是%s