2012-04-19 5 views
0

ボタンにonClickListenerを追加したいと思います。私はそれを押すと、それはユーザーの場所にanimatesTo。ただし、ユーザーの場所がなく、ボタンを押すと、ユーザーの場所= nullのためにクラッシュします。それがヌルと等しくない場合にのみ、どのように実行させるのですか?私が試してみましたボタンの条件文として 'Location'!= nullを作成するにはどうすればよいですか?

-

private void myLocationButton() { 
    MapView mp = (MapView) findViewById(R.id.mapView); 
    final MapController mapController = mp.getController(); 
    final Button myLocationButton = (Button) findViewById(R.id.myLocationButton); 
    myLocationButton.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      if (myLocationButton.isClickable()) { 
       mapController.animateTo(myLocationOverlay.getMyLocation()); 
       mapController.setZoom(17); 

      } 

     } 
    }); 

} 

これは長い記事で、あなたの十分な時間をありがとうございました。

+0

'myLocationGeoPoint'は常に' null'ですか?最初に一度だけ更新するので、おそらくそこではnullになります。 – zapl

答えて

0

はこれを試してみてください。

@Override 
     public void onClick(View v) { 
      if (myLocationButton.isClickable() && myLocationOverlay.getMyLocation() != null) { 
       mapController.animateTo(myLocationOverlay.getMyLocation()); 
       mapController.setZoom(17); 

      } 

     } 
    }); 
+0

非常にイムランありがとう、それは働いた。 – DesignAndCode

+0

歓迎の友人:-) –

1

あなたはほぼ右のそれをやっています。しかし、ボタンを押した瞬間に!= nullでなければならないので、新鮮なLocationオブジェクトを取得する必要があります。私はまたあなたがちょうどクリックされたのでisClickable()チェックが必要であることを疑う。私はここにuserLocation変数を使用してい

myLocationButton.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     Location userLocation = myLocationOverlay.getMyLocation(); 
     if (myLocationButton.isClickable() && userLocation != null) { 
      mapController.animateTo(userLocation); 
      mapController.setZoom(17); 
     } 
    } 
}); 

あなたはgetMyLocationに2回目の呼び出しで新しい結果を取得し、それが再びnullかもしれないので、

if (myLocationOverlay.getMyLocation() != null) { 
    mapController.animateTo(myLocationOverlay.getMyLocation()); 
} 

はまだNullPointerExceptionを投げることができるので。 getMyLocationは実際にはnullに変更されている可能性が高いので、安全でなければなりません。

+0

それはまた正しいです。ありがとう、ザッププ。 – DesignAndCode

関連する問題