在按钮逻辑中尝试捕捉
Try Catch within Button Logic
我写了一些代码,在点击时在当前位置设置一个标记。不幸的是,当没有给出当前位置并单击按钮时,整个应用程序会崩溃。错误状态:
java.lang.NullPointerException: 尝试在空对象引用
上调用虚拟方法'double java.lang.Double.doubleValue()'
有没有办法在按钮内实现 try catch 豁免?
这是按钮的点击说明:
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");
}
});
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");
}
});
在访问 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();
}
}
});
这里已经有两个答案。但我想告诉你正确的方法。
如果他还没有选择位置,只需 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");
});
我写了一些代码,在点击时在当前位置设置一个标记。不幸的是,当没有给出当前位置并单击按钮时,整个应用程序会崩溃。错误状态: java.lang.NullPointerException: 尝试在空对象引用
上调用虚拟方法'double java.lang.Double.doubleValue()'有没有办法在按钮内实现 try catch 豁免?
这是按钮的点击说明:
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");
}
});
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");
}
});
在访问 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();
}
}
});
这里已经有两个答案。但我想告诉你正确的方法。
如果他还没有选择位置,只需 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");
});