2012-07-28 158 views
-1

我正在創建一個相當簡單的android應用程序,它基本上是一個計時器,我試圖讓它可以在設置中設置計時器長度,然後使用首選項檢索值並設置它作爲計時器的長度。我可以從首選項中檢索值並簡單顯示它。Android - 將字符串轉換爲long值

但是當我嘗試使用Long.parseLong(string)或Long.valueOf(String)和Long.valueOf(Int)將字符串值(即1)轉換爲long值時,我沒有收到任何代碼中的錯誤,但是當我嘗試啓動應用程序時,它強制關閉,並且錯誤日誌說它是由NumberFormatException引起的,下面是我正在使用的代碼部分,如果我刪除了說Long.ParseLong的行。 ..一切工作正常。

 private long interval = 1000 ; 
     private long startTime = 30000; 



     /** Called when the activity is first created. */ 
     public void onCreate(Bundle savedInstanceState) 
      { 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.activity_countdown_timer); 

       SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 

       StringBuilder builder = new StringBuilder(); 
       builder.append("\n"+ prefs.getString("timerLength","NULL")); 
       startTime = Long.parseLong(builder.toString()); 




       TextView view = (TextView)findViewById(R.id.showTimer); 
       view.setText(builder.toString()); 
+0

我覺得自己的喜好返回NULL。所以它不能被解析。 – 2012-07-28 09:33:23

+0

你有什麼異常? – Praveenkumar 2012-07-28 09:33:51

+0

我不認爲它這樣做,因爲我可以檢索該值並將其顯示爲一個字符串 – Harry12345 2012-07-28 09:34:27

回答

3

問題是'\n'字符。該字符串只能包含一個long作爲字符串才能成功解析。

+0

我認爲你可能是正確的,現在將嘗試 – Harry12345 2012-07-28 09:41:59

+0

謝謝,這正是它是,在我面前整個時間... – Harry12345 2012-07-28 09:47:14

+0

他也應該刪除prefs返回null。如果它返回null,它可能再次拋出異常。使用try catch也沒有意義。 – san 2012-07-28 09:47:16

3

請刪除 「\ n」

StringBuilder builder = new StringBuilder(); 
builder.append(prefs.getString("timerLength","NULL")); 
startTime = Long.parseLong(builder.toString());