错误给出java.lang Nullpointerexception

时间:2014-09-10 07:29:13

标签: java android

嘿我在运行应用程序时出现错误jDocument doc = md.getDocument(fromPosition,toPosition,GMapDirection.MODE_DRIVING),所以请任何人帮我解决这个问题。

ManinActivity代码如下:

public class MainActivity extends Activity {
GoogleMap map;
GMapDirection md;
LatLng fromPosition = new LatLng(13.687140112679154, 100.53525868803263);
LatLng toPosition = new LatLng(13.683660045847258, 100.53900808095932);
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    map = ((MapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap();

     LatLng coordinates = new LatLng(13.685400079263206, 100.537133384495975);      
    map.animateCamera(CameraUpdateFactory.newLatLngZoom(coordinates, 16));  
    map.addMarker(new MarkerOptions().position(fromPosition).title("Start"));
    map.addMarker(new MarkerOptions().position(toPosition).title("End"));

    Document doc = md.getDocument(fromPosition, toPosition, GMapDirection.MODE_DRIVING);
    int duration = md.getDurationValue(doc);
    String distance = md.getDistanceText(doc);
    String start_address = md.getStartAddress(doc);
    String copy_right = md.getCopyRights(doc);

    ArrayList<LatLng> directionPoint = md.getDirection(doc);
    PolylineOptions rectLine = new PolylineOptions().width(3).color(Color.RED);

    for(int i = 0 ; i < directionPoint.size() ; i++) {          
        rectLine.add(directionPoint.get(i));
    }
    map.addPolyline(rectLine);   
}       

}

// GMapDirection类代码如下:

 public class GMapDirection {
    public final static String MODE_DRIVING = "driving";
    public final static String MODE_WALKING = "walking";
    public GMapDirection() { }  
    public Document getDocument(LatLng start, LatLng end, String mode){
        String url = "http://maps.googleapis.com/maps/api/directions/xml?" 
                + "origin=" + start.latitude + "," + start.longitude  
                + "&destination=" + end.latitude + "," + end.longitude 
                + "&sensor=false&units=metric&mode=driving";
        Log.d("GoogleMapsDirection", url);
        try {
            HttpClient httpClient = new DefaultHttpClient();
            HttpContext localContext = new BasicHttpContext();
            HttpPost httpPost = new HttpPost(url);
            HttpResponse response = httpClient.execute(httpPost, localContext);
            InputStream in = response.getEntity().getContent();
            DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
            Document doc = builder.parse(in);
            return doc;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}

1 个答案:

答案 0 :(得分:0)

我认为你说这句话:

    Document doc = md.getDocument(fromPosition, toPosition,
                                  GMapDirection.MODE_DRIVING);

给你一个NullPointerException。这意味着当您执行上述操作时mdnull。 (这行代码没有其他可能的方法可以抛出异常!)

我可以看到md的声明:

    GMapDirection md;

但是我无法看到你在哪里初始化它。如果您未在任何地方初始化md,那么这就是null的原因......这就是您例外的原因。

相关问题