2012-07-28 151 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());