2016-10-21 2 views
0

私は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でこれを書いていた場合。

すべてのアイデア?

答えて

1
@Override 
public void onMapReady(final GoogleMap googleMap) { 
    this.googleMap=googleMap; 
    this.googleMap.setMyLocationEnabled(true); // this line shows the current location button 
    googleMap.setOnMyLocationChangeListener(myLocationChangeListener); 
    Location myLocation = getLastKnownLocation(); 
} 
+0

からgoogleMap.setOnMyLocationChangeListener(myLocationChangeListのENER)を除去することによって解決され、あなたは正しいですが、問題は、私はonMapReadyで上記のコードを書いていたときに、別の場所に移動しようとしているということですそれは私を別の場所に連れて行き、何もせずに現在の場所に戻ってくるのです。 – chandra

+0

ロケーションリスナーを使用してロケーションのアップデートを取得していますか? –

+0

私はgetLastKnownLocationとonLocationChangedを使用しています。 – chandra

関連する問題