私はgpsシンボルが必要なマップを持っています(ユーザーがこのシンボルをクリックすると、現在の場所に移動します)。私は活動の中でそれをすることができ、それは活動においてうまくいっているが、それは断片の問題を作り出している。 ケース1:が初期化される前に、onCreateView
メソッドに以下のコードを書くと、Null Pointer Exceptionが発生する理由が呼び出されています。フラグメント(マップ)内のsetOnMyLocationボタンを取得する方法
((SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.googlemap)).getMapAsync(this);
if(googleMap!=null){
googleMap.setMyLocationEnabled(true);
googleMap.setOnMyLocationButtonClickListener(new GoogleMap.OnMyLocationButtonClickListener() {
@Override
public boolean onMyLocationButtonClick() {
if(marker!=null){
marker.remove();
}
return false;
}
});
}
@Override
public void onMapReady(final GoogleMap googleMap) {
this.googleMap=googleMap;
googleMap.setOnMyLocationChangeListener(myLocationChangeListener);
Location myLocation = getLastKnownLocation();
}
CASE 2私はそれでもそれをクリックすることなく、自動的に現在の場所に私を取っているonMapready
でこれを書いていた場合。
すべてのアイデア?
からgoogleMap.setOnMyLocationChangeListener(myLocationChangeListのENER)を除去することによって解決され、あなたは正しいですが、問題は、私はonMapReadyで上記のコードを書いていたときに、別の場所に移動しようとしているということですそれは私を別の場所に連れて行き、何もせずに現在の場所に戻ってくるのです。 – chandra
ロケーションリスナーを使用してロケーションのアップデートを取得していますか? –
私はgetLastKnownLocationとonLocationChangedを使用しています。 – chandra