0

嗨,大家我試圖在地圖上的兩點之間繪製多段線,但是當我運行我的方法時,它會給出下面列出的錯誤。我已經收窄的示數行:帆布在android中的畫線

canvas.drawLine(p1.x, p1.y, p2.x, p2.y, mPaint); 

這裏是我的類,它正試圖吸引

package com.example.hellogooglemap; 

class MyOverlay extends Overlay{ 
    private Projection projection; 
    Paint mPaint; 
    Context mContext; 
    List<GeoPoint> gpList; 


public MyOverlay(List<GeoPoint> geopointList, Context context) { 
     super(); 
     mContext = context; 
     gpList = geopointList; 

     Paint mPaint = new Paint(); 
     mPaint.setARGB(255, 10, 10, 255); 
     mPaint.setAntiAlias(true); 
     mPaint.setFakeBoldText(true); 

     //Toast.makeText(mContext, gpList.get(0).toString() , Toast.LENGTH_SHORT).show(); 
} 

@Override 
public void draw(Canvas canvas, MapView mapv, boolean shadow){ 
    projection = mapv.getProjection(); 

    Point p1 = new Point(); 
    Point p2 = new Point();   

    projection.toPixels(gpList.get(0), p1); 
    projection.toPixels(gpList.get(1), p2); 

    canvas.drawLine(p1.x, p1.y, p2.x, p2.y, mPaint);   

    super.draw(canvas, mapv, shadow); 
    } 

} 

這裏有錯誤

12-08 03:50:05.559: E/AndroidRuntime(1804): FATAL EXCEPTION: main 
12-08 03:50:05.559: E/AndroidRuntime(1804): java.lang.NullPointerException 
12-08 03:50:05.559: E/AndroidRuntime(1804):  at android.graphics.Canvas.drawLine(Canvas.java:876) 
12-08 03:50:05.559: E/AndroidRuntime(1804):  at com.example.hellogooglemap.MyOverlay.draw(MyOverlay.java:56) 
12-08 03:50:05.559: E/AndroidRuntime(1804):  at com.google.android.maps.Overlay.draw(Overlay.java:179) 
12-08 03:50:05.559: E/AndroidRuntime(1804):  at com.google.android.maps.OverlayBundle.draw(OverlayBundle.java:42) 
12-08 03:50:05.559: E/AndroidRuntime(1804):  at com.google.android.maps.MapView.onDraw(MapView.java:532) 
12-08 03:50:05.559: E/AndroidRuntime(1804):  at android.view.View.draw(View.java:13707) 
12-08 03:50:05.559: E/AndroidRuntime(1804):  at android.view.View.draw(View.java:13591) 
12-08 03:50:05.559: E/AndroidRuntime(1804):  at android.view.ViewGroup.drawChild(ViewGroup.java:2928) 
12-08 03:50:05.559: E/AndroidRuntime(1804):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797) 
12-08 03:50:05.559: E/AndroidRuntime(1804):  at android.view.View.draw(View.java:13589) 
12-08 03:50:05.559: E/AndroidRuntime(1804):  at android.view.ViewGroup.drawChild(ViewGroup.java:2928) 

任何幫助將不勝讚賞。我一直在堅持這一點。

回答

1

在這一行:

Paint mPaint = new Paint(); 

你分配到一個局部變量,而不是一個類。只要刪除領先的「油漆」

mPaint = new Paint();