2016-12-16 20 views
0

私のプロジェクトではGoogleマップを使用しています。それは動作していたが、私は何かを(何を知っていない)今getMap()エラーを与える。私は何かを更新すると思う。どうすれば修正できますか?GoogleマップではメソッドgetMap()を解決できません

私のコードはそうです。

GoogleMap googleMap; 
.. 
if (locationManagerCheck.isLocationServiceAvailable()) { 
     if (googleMap == null) { 
      try { 
       googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();//ERROR 
      } catch (Exception e) { 
       Toast.makeText(getApplicationContext(), 
         e.getMessage(), Toast.LENGTH_SHORT) 
         .show(); 
      }... 

私はそれを作る試みた:

googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMapAsync(this); 

が、 'これは' 別のエラー を与えるあなたが私を助けることができますか?

編集:あなたはそれがnullあるマップを検索している時点で

public class MainActivity extends FragmentActivity implements OnMapReadyCallback { 

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


LocationManager_check locationManagerCheck = new LocationManager_check(
       this); 


     if (locationManagerCheck.isLocationServiceAvailable()) { 
      if (googleMap == null) { 
       try { 
        MapFragment mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.map); 
        mapFragment.getMapAsync(this); 

       } catch (Exception e) { 
        Toast.makeText(getApplicationContext(), 
          e.getMessage(), Toast.LENGTH_SHORT) 
          .show(); 
       } 
       { 
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
         // TODO: Consider calling 
         // ActivityCompat#requestPermissions 
         // here to request the missing permissions, and then overriding 
         // public void onRequestPermissionsResult(int requestCode, String[] permissions, 
         //           int[] grantResults) 
         // to handle the case where the user grants the permission. See the documentation 
         // for ActivityCompat#requestPermissions for more details. 
         return; 
        } 
        googleMap.setMyLocationEnabled(true); 

        googleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() { 
         @Override 
         public void onInfoWindowClick(final Marker marker) {....} 



} 

@Override 
    public void onMapReady(GoogleMap Map) { 
     googleMap=Map; 
    } 



} 
+0

getMapAsyncメソッドを使用する必要がありますが、 'this'はインターフェイス –

答えて

2

例えば、Fragmentであなたは、たとえば、setContentView(R.layout.your_layout);

を呼び出した後onViewCreatedonCreateActivityでそれを行うことができますアクティビティにマップを追加するには、レイアウトにマップフラグメントを追加します。

その後、3210
<?xml version="1.0" encoding="utf-8"?> 
<fragment xmlns:android="http://schemas.android.com/apk/res/android" 
    android:name="com.google.android.gms.maps.MapFragment" 
    android:id="@+id/map" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"/> 

そして、あなたの活動でそれを使用します。

public class MainActivity extends FragmentActivity implements OnMapReadyCallback { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     MapFragment mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.map); 
     mapFragment.getMapAsync(this); 

    } 

    @Override 
    public void onMapReady(GoogleMap map) { 

     map.setMyLocationEnabled(true); 
     map.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() { 
        @Override 
        public void onInfoWindowClick(final Marker marker) {....} 

} 

マップは、非同期の方法で作成され、マップの準備ができたときにonMapReady関数が呼び出されます、この機能に追加することができますマーカー、位置、タイトル、ズームなどを変更します。

+0

私はすべて私が戻って古いGoogleサービスのバージョンに戻ってほしいと思う方法を変更する必要がありますどのように私はそれを行うことができます –

+0

Googleサービスのバージョンは、 – Yoleth

+0

私のコードは私がgoogleを更新する前に働いていたので、 –

0

。ビューが初期化されたら、これを行う必要があります。あなたはdocumentation

に表情を与える必要があります

@Override 
public void onViewCreated(View view, Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 
    MapView mapView = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)); 
    mapView.getMapAsync(this); 
} 
+0

の実装でなければなりません。しかし、それは私が考える依存関係について何か間違っていた作業していた –

+0

あなたが受信している両方のエラーを投稿すると役立つでしょう。私は彼らが 'NullPointerExceptions'だと思った – StuStirling

関連する問題