Issue
Now I have an activity by which I want to call a Service named MyService. I wrote
Intent i =new Intent(this,MyService.class);
i.putExtra("s", s);
startService(i);
in the activity,while my MyService.java typed
@Override
public void onStart(Intent intent, int startId)
{
// TODO: Implement this method
super.onStart(intent, startId);
connect(intent);
try{
connect(intent);
Intent i=new Intent();
s=i.getStringExtra("s").toString();
sendData(s);
} catch(IOError e)
{
Toast.makeText(getBaseContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
}
}
But when I run the code, I get a NullPointException on the line
s=i.getStringExtra("s").toString();
Please who can tell me where I have gone wrong,and what should I do,thanks.
Then, I got the log of my app whose package name is "com.TsyQi.Sensor"
java.lang.RuntimeException: Unable to start service com.TsyQi.Sensor.MyService@26abf3ed with Intent { cmp=com.TsyQi.Sensor/.MyService }:
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.toString()' on a null object reference
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2882)
at android.app.ActivityThread.access$2100(ActivityThread.java:147)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1379)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5233)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
Caused by:
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.toString()' on a null object reference
at com.TsyQi.Sensor.MyService.onStart(MyService.java:227)
at android.app.IntentService.onStartCommand(IntentService.java:130)
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2865)
... 9 more
Solution
Intent i=new Intent();
s=i.getStringExtra("s").toString();
you just create the Intent i
, so it does not contain any string for the key s
, making getStringExtra
return null
, calling toString
to the null object, will make your app crash for NPE
. You probably want to use the intent
you get as parameter in onStart
, instead of creating a new one
Answered By - Blackbelt
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.