Java 为什么字符串初始化会抛出NullPointerError?

Java 为什么字符串初始化会抛出NullPointerError?,java,android,string,android-studio,nullpointerexception,Java,Android,String,Android Studio,Nullpointerexception,我一直在android Studio中编写一个android应用程序,目的是从Google directions API(使用截取库)获取一个JSONObject,然后将其传递给一个新的活动(在那里它将被打印出来,这样我就可以在解析它之前进行调试)。但是,通过ADB在我的手机上运行应用程序时 提交按钮的onClick(应用程序崩溃时)调用的方法是: 公共作废提交(查看){ Location Location=LocationServices.FusedLocationApi.getLastLoc

我一直在android Studio中编写一个android应用程序,目的是从Google directions API(使用截取库)获取一个JSONObject,然后将其传递给一个新的活动(在那里它将被打印出来,这样我就可以在解析它之前进行调试)。但是,通过ADB在我的手机上运行应用程序时

提交按钮的onClick(应用程序崩溃时)调用的方法是:

公共作废提交(查看){
Location Location=LocationServices.FusedLocationApi.getLastLocation(locationClient);
字符串destination=findViewById(R.id.destinationInput).toString();
字符串url=”https://maps.googleapis.com/maps/api/directions/json?origin="
+location.getLatitude()
+location.getLongitude()
+“&destination=“+目的地”
+“&模式=驾驶”
+避免()
+“出发时间=现在”
+“&key=“+getString(R.string.API_-key);
请求队列请求队列;
//实例化缓存
Cache Cache=new DiskBasedCache(getCacheDir(),1024*1024);//1MB上限
//设置网络以使用HttpURLConnection作为HTTP客户端。
网络=新的基本网络(new HurlStack());
//使用缓存和网络实例化RequestQueue。
requestQueue=新的requestQueue(缓存、网络);
//启动队列
requestQueue.start();
JsonObjectRequest jsObjRequest=新的JsonObjectRequest
(Request.Method.GET,url,null,new Response.Listener()){
@凌驾
公共void onResponse(JSONObject dirs){
意图;
intent=newintent(getApplicationContext(),DisplayDirections.class);
intent.putExtra(“方向”,dirs.toString());
星触觉(意向);
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
}
});
//将请求添加到RequestQueue。
add(jsObjRequest);
}
私有字符串(){
字符串avoid=“avoid=”;
布尔值any=false;
if(((开关)findViewById(R.id.avoidTollsSwitch)).isChecked()){
避免+=“通行费”;
any=真;
}
如果((开关)findViewById(R.id.avoidMotorwaysSwitch)).isChecked()){
如果(有)避免+=“|”;
避免+=“高速公路”;
any=真;
}
if(((开关)findViewById(R.id.avoidFerriesSwitch)).isChecked()){
如果(有)避免+=“|”;
避免+=“渡轮”;
any=真;
}
如果(任何)返回,请避免;
否则返回“”;
}
LogCat日志链接到行字符串url=,但我不知道这行有什么问题。据我所知,我的代码应该可以工作


截击教程:

您确定
位置
不为空吗?在
字符串url=
行上放置断点,查看其值。

如果在模拟器上运行断点,则需要向模拟器发送坐标。否则,
位置
将为空

当我第一次使用地理定位服务时,我对它感到很紧张

做一个像这样的检查

if (location!=null) {
foo.doSomethingWithLocation(bar);
} else {
 Log.d(TAG, "Sorry. Location is null");
}

在调用任何对象之前

可能位置为null?请提供完整的堆栈跟踪
LocationServices.FusedLocationApi.getLastLocation(…)
在某些情况下可以返回
null
。行动前检查一下。难道不应该是
避免=
避免=
?出发前还有一个
if (location!=null) {
foo.doSomethingWithLocation(bar);
} else {
 Log.d(TAG, "Sorry. Location is null");
}