2017-11-25 11 views
1

クリックしたときに現在の場所にマーカーを設定するコードを書きました。残念ながら、現在の場所が指定されず、ボタンがクリックされると、アプリケーション全体がクラッシュします。エラー番号: java.lang.NullPointerException:NULLオブジェクト参照で仮想メソッド '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"); 

     } 
    }); 
+0

確かに方法があります。やってみました? *それを実装するのは、あなたが立ち往生しているのですか? https://docs.oracle.com/javase/tutorial/essential/exceptions/catch.html – codeMagic

+0

myLocationはおそらくnullです。 if(myLocation!= null){ }のように、コードにヌルのチェックを入れる必要があります。 –

答えて

1

すでに2つの回答があります。しかし、私はこれを行う正しい方法を教えたいと思います。 ちょうど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"); 

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

緯度/経度の値にアクセスする前にこれを試してみてください:ここで

は、ボタンのクリック命令です。

 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(); 
       } 


      } 
     });