Java 在按钮逻辑中尝试捕捉
我编写了一些代码,在单击时在当前位置上设置一个标记。不幸的是,当没有给出当前位置并单击按钮时,整个应用程序崩溃。错误状态为: java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“double java.lang.double.doubleValue()” 有没有办法在按钮内实现try-catch豁免 以下是按钮的点击说明:Java 在按钮逻辑中尝试捕捉,java,android,android-maps-v2,Java,Android,Android Maps V2,我编写了一些代码,在单击时在当前位置上设置一个标记。不幸的是,当没有给出当前位置并单击按钮时,整个应用程序崩溃。错误状态为: java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“double java.lang.double.doubleValue()” 有没有办法在按钮内实现try-catch豁免 以下是按钮的点击说明: markerBtn.setOnClickListener(new View.OnClickListener() {
markerBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
LatLng myCurrentLocation = new LatLng(myCurrentLatitude, myCurrentLongitude);
marker = mMap.addMarker(new MarkerOptions().position(myLocation).title("New Marker"));
markerBtn.setTag("yo");
}
});
在访问lat/lng值之前,请尝试此操作
markerBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
try{
if((myCurrentLatitude!=null && myCurrentLongitude!=null) &&(myCurrentLatitude!=0.0 && myCurrentLongitude!=0.0))
{
LatLng myCurrentLocation = new LatLng(myCurrentLatitude, myCurrentLongitude);
marker = mMap.addMarker(new MarkerOptions().position(myLocation).title("New Marker"));
markerBtn.setTag("yo");
}
}
catch(Exception e)
{
e.getMessage();
}
}
});
这里已经有两个答案了。但我想告诉你正确的方法。 如果他还没有选择位置,只需返回带有适当消息的代码即可 奖金建议:避免使用
尝试拦截
。它们用于意外错误。
就像尝试连接一个不存在的套接字
markerBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// check if user has not set location yet.
if (myCurrentLatitude == null | myCurrentLongitude == null){
Toast.makeText(EventViewActivity.this, "Please choose your location first", Toast.LENGTH_SHORT).show();
return;
}
LatLng myCurrentLocation = new LatLng(myCurrentLatitude, myCurrentLongitude);
marker = mMap.addMarker(new MarkerOptions().position(myLocation).title("New Marker"));
markerBtn.setTag("yo");
});
当然有办法。你试过了吗?你到底在执行它的哪一部分?您的myLocation可能为空。您需要在代码中检查null,比如if(myLocation!=null){}
markerBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// check if user has not set location yet.
if (myCurrentLatitude == null | myCurrentLongitude == null){
Toast.makeText(EventViewActivity.this, "Please choose your location first", Toast.LENGTH_SHORT).show();
return;
}
LatLng myCurrentLocation = new LatLng(myCurrentLatitude, myCurrentLongitude);
marker = mMap.addMarker(new MarkerOptions().position(myLocation).title("New Marker"));
markerBtn.setTag("yo");
});