2016-03-24 22 views
0

Harita görünümlerim var ve bana depresif bir uyarı göstermesine rağmen getMap() işlevini kullanırken iyi çalışıyor. Ancak, 'u getMapAsync() olarak değiştirdiğimde, uygulama çökecektir.MapsView'da getMapAsync() kullanırken uygulama çökmesi -

İşte İşte benim kod

public class MapsActivity extends AppCompatActivity implements GoogleMap.OnInfoWindowClickListener, 
    GoogleApiClient.ConnectionCallbacks, 
    GoogleApiClient.OnConnectionFailedListener, 
    GoogleMap.OnMarkerDragListener, 
    GoogleMap.OnInfoWindowCloseListener, 
    LocationListener { 

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

     ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)) 
       .getMapAsync(this); 

     mMap.setOnInfoWindowClickListener(this); 
     mMap.setOnInfoWindowCloseListener(this); 
     mMap.setOnMarkerDragListener(this); 

     mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() { 
      @Override 
      public void onMapClick(LatLng latLng) { 
       markerPoints.add(latLng); 
       MarkerOptions options = new MarkerOptions(); 
       // Setting the position of the marker 
       options.position(latLng); 
      } 
     }); 

     mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() { 

      @Override 
      public boolean onMarkerClick(Marker marker) {  
       //Getting the coordinates 
       toLatitude = marker.getPosition().latitude; 
       toLongitude = marker.getPosition().longitude; 

       dest = new LatLng(toLatitude, toLongitude); 
       mMap.animateCamera(CameraUpdateFactory.newLatLng(dest)); 

       return ((toLatitude == my_marker.getPosition().latitude) && (toLongitude == my_marker.getPosition().longitude)); 
      } 
     }); 
    } 

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

    private void setUpMap() { 
     if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) 
       == PackageManager.PERMISSION_GRANTED) { 
      mMap.setMyLocationEnabled(true); 
     } else { 
      Toast.makeText(MapsActivity.this, "Anda harus menyetujuinya agar dapat menikmati semua fitur yang ada", Toast.LENGTH_LONG).show(); 
      if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) 
        == PackageManager.PERMISSION_GRANTED) { 
       mMap.setMyLocationEnabled(true); 
      } 
     } 

     mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); 
     mMap.setTrafficEnabled(true); 
     CameraPosition cameraPosition = new CameraPosition.Builder() 
       .zoom(15)     // Sets the zoom 
       .target(new LatLng(-6.597629,106.79957)) 
       .tilt(40)     // Sets the tilt of the camera to 30 degrees 
       .build();     // Creates a CameraPosition from the builder 
     mMap.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); 
    } 
} 

var benim kod nesi var xml düzenini

<fragment xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/map" 
     android:name="com.google.android.gms.maps.SupportMapFragment" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

</FrameLayout> 

var? Herhangi bir yardım büyük takdir edilecektir.

Teşekkürler.

+0

Lütfen Mesaj Logcat –

+0

Ve istisna nedir? – tak3shi

+1

Olası kopyası [MapsView'de getMapAsync() kullanılırken uygulama çökmesi] (http://stackoverflow.com/questions/36193731/app-crash-when-using-getmapasync-in-mapsview) – Selvin

cevap

0

Ben mmap'e o boş işaretçi istisna atma gerekir bu yüzden başlatıldı alır önce mmap'ekullanıyor yapıyoruz here.What GoogleMap nesne olduğunu varsayalım.

o sizin problem.So çözer onMapReady Callback.Hope içinde mmap nesneyi kullandığınızdan emin olun, kısacası yapmanız gereken tüm yer tüm mmap'in onMap Hazır geri aramasında kullanımları olan

0

getMapAsync anında onMapReady numaralı çağrı yapılmadı. ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map))'un boş olmadığından veya onMapReady()'un başarıyla tamamlandığından emin olun.

+0

Kodumu değiştirdim bu 'SupportMapFragment mapFragment = ((SupportMapFragment) getSupportFragmentManager(). findFragmentById (R.id.map)); if (mapFragment! = Null) { mapFragment.getMapAsync (this) } ' Ancak yine de çöküyor :( –

İlgili konular