我编写了一些代码,用于在单击时在当前位置设置标记。不幸的是,当没有给出当前位置并且点击按钮时,整个应用程序崩溃。错误说明: java.lang.NullPointerException:尝试在空对象引用上调用虚方法'double java.lang.Double.doubleValue()'
有没有办法在按钮内实现try catch免除?
以下是按钮的点击说明:
Range:
答案 0 :(得分:1)
markerBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
try{
LatLng myCurrentLocation = new LatLng(myCurrentLatitude, myCurrentLongitude);
marker = mMap.addMarker(new MarkerOptions().position(myLocation).title("New Marker"));
markerBtn.setTag("yo");
}catch(Exception e){
System.out.println("No current location set");
}
});
答案 1 :(得分:1)
在访问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();
}
}
});
答案 2 :(得分:1)
这里已有两个答案。但我想告诉你正确的方法。
如果他还没有选择位置,只需return
代码和相应的消息。
奖金建议:避免使用try catch block
。它们用于意外错误。
就像尝试连接不存在的套接字一样。
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");
});