首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试在按钮逻辑中捕捉

尝试在按钮逻辑中捕捉
EN

Stack Overflow用户
提问于 2017-11-25 00:01:42
回答 3查看 2.1K关注 0票数 1

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

是否有办法在按钮内实现试捕豁免?

以下是按钮的单击指令:

代码语言:javascript
复制
    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");

        }
    });
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-11-25 13:42:36

这里已经有两个答案了。但我想告诉你正确的方法。如果他还没有选择位置,只需使用适当的消息return代码即可。

奖金建议:避免在这些方面使用try catch block。它们用于处理意外错误。比如尝试连接一个不存在的套接字。

代码语言:javascript
复制
   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");

            });
票数 1
EN

Stack Overflow用户

发布于 2017-11-25 00:11:05

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2017-11-25 00:12:04

在访问lat/lng值之前尝试这样做。

代码语言:javascript
复制
      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();
               }


            }
        });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47481404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档