在按钮逻辑中尝试捕捉

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");

            });