尝试按钮逻辑中的捕获

时间:2017-11-25 00:01:43

标签: java android android-maps-v2

我编写了一些代码,用于在单击时在当前位置设置标记。不幸的是,当没有给出当前位置并且点击按钮时,整个应用程序崩溃。错误说明: java.lang.NullPointerException:尝试在空对象引用上调用虚方法'double java.lang.Double.doubleValue()'

有没有办法在按钮内实现try catch免除?

以下是按钮的点击说明:

Range:

3 个答案:

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

            });