I've spent the past two hours debugging what seems extremely unlikely. I've stripped the method of a secondary Android Activity to exactly this:
public void onClick(View v) {
String str = "25";
long my_long = Long.getLong(str);
} // onClick (v)
And yeah, I get a crash with the good ol' NullPointerException:
09-11 02:02:50.444: ERROR/AndroidRuntime(1588): Uncaught handler: thread main exiting due to uncaught exception 09-11 02:02:50.464: ERROR/AndroidRuntime(1588): java.lang.NullPointerException
It looks like (from other tests) that Long.getLong(str) returns NULL, which is driving me bonkers. WHAT AM I MISSING?
Thanks in advance. I'm okay with stupidly missing the obvious, but my sanity is on the line.
You are missing the fact that
Long.getLong(String str)
is not supposed to parse a String to a long, but rather to return a long value of a system property represented by that string. As others have suggested, what you actually need isLong.parseLong(String str)
.I think you are using wrong function use Long.parseLong(str) then you can get the right answer.
You can use
Long.parseLong(String)
, instead ofgetLong(String)
: it will solve the problem.To understand this, some examples:
returns:
null
returns:
3000
Using Long.parseLong() :
returns:
32340
The documentation describe getLong() method as :
this is the code of the getLong() method and only get a property value defined by a string:
If you want to parse a String to Long, the best way is using Long.parseLong() method.
Long.parseLong(someString) approved. Don't forget to catch NumberFormatException if there's a probability of unparsable string.