I have a code for finding user current location.When i was running my code in android 1.6 i got output.But i was running in android 2.3 i got error only.what is the problem for my code.
Logcat:
08-15 23:03:39.612: E/AndroidRuntime(403): FATAL EXCEPTION: main
08-15 23:03:39.612: E/AndroidRuntime(403): java.lang.NullPointerException
08-15 23:03:39.612: E/AndroidRuntime(403): at com.android.locationspeecher.MyPositionOverlay.draw(MyPositionOverlay.java:25)
08-15 23:03:39.612: E/AndroidRuntime(403): at com.google.android.maps.Overlay.draw(Overlay.java:179)
08-15 23:03:39.612: E/AndroidRuntime(403): at com.google.android.maps.OverlayBundle.draw(OverlayBundle.java:45)
08-15 23:03:39.612: E/AndroidRuntime(403): at com.google.android.maps.MapView.onDraw(MapView.java:530)
08-15 23:03:39.612: E/AndroidRuntime(403): at android.view.View.draw(View.java:6880)
08-15 23:03:39.612: E/AndroidRuntime(403): at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
08-15 23:03:39.612: E/AndroidRuntime(403): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
08-15 23:03:39.612: E/AndroidRuntime(403): at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
08-15 23:03:39.612: E/AndroidRuntime(403): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
08-15 23:03:39.612: E/AndroidRuntime(403): at android.view.View.draw(View.java:6883)
08-15 23:03:39.612: E/AndroidRuntime(403): at android.widget.FrameLayout.draw(FrameLayout.java:357)
08-15 23:03:39.612: E/AndroidRuntime(403): at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
08-15 23:03:39.612: E/AndroidRuntime(403): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
08-15 23:03:39.612: E/AndroidRuntime(403): at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
08-15 23:03:39.612: E/AndroidRuntime(403): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
08-15 23:03:39.612: E/AndroidRuntime(403): at android.view.View.draw(View.java:6883)
08-15 23:03:39.612: E/AndroidRuntime(403): at android.widget.FrameLayout.draw(FrameLayout.java:357)
08-15 23:03:39.612: E/AndroidRuntime(403): at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1862)
08-15 23:03:39.612: E/AndroidRuntime(403): at android.view.ViewRoot.draw(ViewRoot.java:1522)
08-15 23:03:39.612: E/AndroidRuntime(403): at android.view.ViewRoot.performTraversals(ViewRoot.java:1258)
08-15 23:03:39.612: E/AndroidRuntime(403): at android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
08-15 23:03:39.612: E/AndroidRuntime(403): at android.os.Handler.dispatchMessage(Handler.java:99)
08-15 23:03:39.612: E/AndroidRuntime(403): at android.os.Looper.loop(Looper.java:130)
08-15 23:03:39.612: E/AndroidRuntime(403): at android.app.ActivityThread.main(ActivityThread.java:3683)
08-15 23:03:39.612: E/AndroidRuntime(403): at java.lang.reflect.Method.invokeNative(Native Method)
08-15 23:03:39.612: E/AndroidRuntime(403): at java.lang.reflect.Method.invoke(Method.java:507)
08-15 23:03:39.612: E/AndroidRuntime(403): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
08-15 23:03:39.612: E/AndroidRuntime(403): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
08-15 23:03:39.612: E/AndroidRuntime(403): at dalvik.system.NativeStart.main(Native Method)
Here my MyPositionOverlay code:
public class MyPositionOverlay extends Overlay {
Location location;
private final int mRadius=5;
@Override
public void draw(Canvas canvas,MapView mapView,boolean shadow){
Projection projection=mapView.getProjection();
if(shadow==false){
Double latitude=location.getLatitude()*1E6;
Double longitude=location.getLongitude()*1E6;
GeoPoint geoPoint;
geoPoint=new GeoPoint(latitude.intValue(),longitude.intValue());
Point point=new Point();
projection.toPixels(geoPoint, point);
RectF oval=new RectF(point.x - mRadius,point.y - mRadius,point.x + mRadius,point.y + mRadius);
Paint paint=new Paint();
paint.setARGB(250, 255, 255, 255);
paint.setAntiAlias(true);
paint.setFakeBoldText(true);
Paint backPaint=new Paint();
backPaint.setARGB(175, 50, 50, 50);
backPaint.setAntiAlias(true);
RectF backRect=new RectF(point.x + 2 + mRadius, point.y - 3*mRadius,point.x + 65, point.y + mRadius);
canvas.drawOval(oval, paint);
canvas.drawRoundRect(backRect, 5, 5, backPaint);
canvas.drawText("Here I Am", point.x + 2*mRadius, point.y, paint);
}
super.draw(canvas, mapView, shadow);
}
@Override
public boolean onTap(GeoPoint point,MapView mapView){
return false;
}
public Location getLocation(){
return location;
}
public void setLocation(Location location){
this.location=location;
}
}
You have a null pointer exception. It looks like something you are trying to draw is null. Do you have your drawables in a specific resolution folder? Like drawable-ldpi.
If that is the case, the 2.3 emulator could have a different resolution profile (probably mdpi) causing that drawable to be null.
At any rate, you need to go to that line of code and find out what is null, and then find out why.