Сбой приложения при вызове moveCamera Google maps - PullRequest
0 голосов
/ 15 ноября 2018

Я пытаюсь вызвать moveCamera, и мое приложение падает.Я получаю скидку от Intent Extra.Я знаю, что дополнительное происходит через, потому что я печатаю это обновляет текст редактирования.Я попытался ввести разные координаты сам и ничего не работает.Вот моя ошибка

 E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.mmitm, PID: 28348
java.lang.RuntimeException: Unable to resume activity {com.example.mmitm/com.example.mmitm.MapActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.gms.maps.GoogleMap.moveCamera(com.google.android.gms.maps.CameraUpdate)' on a null object reference
    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3645)
    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3685)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2898)
    at android.app.ActivityThread.-wrap11(Unknown Source:0)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
    at android.os.Handler.dispatchMessage(Handler.java:105)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6541)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.gms.maps.GoogleMap.moveCamera(com.google.android.gms.maps.CameraUpdate)' on a null object reference
    at com.example.mmitm.MapActivity.receiveData(MapActivity.java:136)
    at com.example.mmitm.MapActivity.onResume(MapActivity.java:111)
    at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1354)
    at android.app.Activity.performResume(Activity.java:7079)
    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3620)
    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3685) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2898) 
    at android.app.ActivityThread.-wrap11(Unknown Source:0) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593) 
    at android.os.Handler.dispatchMessage(Handler.java:105) 
    at android.os.Looper.loop(Looper.java:164) 
    at android.app.ActivityThread.main(ActivityThread.java:6541) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 

А вот моя активность на карте, где я вызываю movecamera

//onResume Method check which fragment intent is sent from
@Override
protected void onResume() {
    super.onResume();

    //make sure extras are not null
    Bundle extras = getIntent().getExtras();
    if (extras != null) {
        this.receiveData();
        Toast.makeText(this, "Received Data", Toast.LENGTH_SHORT).show();

    }
}

private void receiveData() {
    //RECEIVE DATA VIA INTENT
    Intent i = getIntent();

    if(i != null)
    {
        LatLng locationOne = i.getParcelableExtra("LOC_ONE");
        LatLng locationTwo = i.getParcelableExtra("LOC_TWO");

        Toast.makeText(this, "LocOne = " + locationOne + ", LocTwo = " + locationTwo, Toast.LENGTH_LONG).show();
        //SET DATA TO TEXTVIEWS
        locOne.setText(locationOne.toString());
        locTwo.setText(locationTwo.toString());
        // move camera to location one
        Log.d(TAG, "receiveData: calling moveCamera");



        //Map Crashes when trying to move camera
        mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(locationOne,15));
    }
}

И моя функция MoveCamera

private void moveCamera(LatLng latLng, float zoom){
    Log.d(TAG, "moveCamera: moving the camera to: lat: " + latLng.latitude + ", lng: " + latLng.longitude );
    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, zoom));
}

Это мой первыйAndroid-приложение, поэтому любая помощь приветствуется!

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Вы вызываете moveCamera внутри самой функции, кроме того, зачем вам нужна ваша собственная функция, когда для этого есть встроенная функция.mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(place.getLatLng(), 15.0f));

0 голосов
/ 15 ноября 2018

это, очевидно, дает сбой, потому что mMap - это NULL.

if(this.getIntent() != null && mMap != null) {
    ...
}

, только что приглядевшийся;вам нужно обработать намерение onMapReady():

@Override
public void onMapReady(GoogleMap map) {

    this.mMap = map;

    if(this.getIntent() != null && this.getIntent().getAction() == INTENT_ACTION_LOCATION_SELECT) {
        /* your code goes here */
    } else {
        /* regular initialization */
    }
}

, где onResume() возможно потребуется получить карту из SupportMapFragment.

...