-1

I am trying to start a streetview panorama from a menu item on the action bar. I tried using intent (don't know if I am correct). The app launches fine but when I click on the menu item, I get this runtime error:

Attempt to invoke virtual method 'void com.google.android.gms.maps.SupportStreetViewPanoramaFragment.getStreetViewPanoramaAsync(com.google.android.gms.maps.OnStreetViewPanoramaReadyCallback)' on a null object reference

MapsActivity.java:

package com.example.user.streetview;

import...

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {

private GoogleMap mMap;
private static final LatLng HOME = new LatLng(6.450957, 3.363493);

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

    // Obtain the SupportMapFragment and get notified when the map is ready to be used.
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.maps);
    mapFragment.getMapAsync(this);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);
    getMenuInflater().inflate(R.menu.get_panorama, menu);
    return true;

}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.get_panorama:
            Intent intent = new Intent(this, StreetViewPanoramaActivity.class);
            startActivity(intent);
            return true;

        default:
            return super.onOptionsItemSelected(item);
    }
}

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

    // Add a marker for HOME and move the camera
    mMap.addMarker(new MarkerOptions().position(HOME).title("Home marker"));
    mMap.moveCamera(CameraUpdateFactory.newLatLng(HOME));
}

}

StreetViewPanoramaActivity.java

package com.example.user.streetview;

import...

public class StreetViewPanoramaActivity extends FragmentActivity implements StreetViewPanorama.OnStreetViewPanoramaChangeListener {

private StreetViewPanorama mStreetViewPanorama;
private static final LatLng HOME = new LatLng(6.450957, 3.363493);
public static final float ZOOM_BY = 0.5f;

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

    // Get the Intent that started this activity and extract the string
    Intent intent = getIntent();

    //Then use getStreetViewPanoramaAsync() to set the callback on the fragment.
    SupportStreetViewPanoramaFragment streetViewPanoramaFragment = (SupportStreetViewPanoramaFragment) getSupportFragmentManager().findFragmentById(R.id.street_view_panorama);
    streetViewPanoramaFragment.getStreetViewPanoramaAsync(new OnStreetViewPanoramaReadyCallback() {
        @Override
        public void onStreetViewPanoramaReady(StreetViewPanorama panorama) {
            mStreetViewPanorama = panorama;
            mStreetViewPanorama.setPosition(HOME);
            mStreetViewPanorama.setStreetNamesEnabled(true);

            StreetViewPanoramaCamera camera = new StreetViewPanoramaCamera.Builder()
                    .zoom(mStreetViewPanorama.getPanoramaCamera().zoom + ZOOM_BY)
                    .tilt(mStreetViewPanorama.getPanoramaCamera().tilt)
                    .bearing(mStreetViewPanorama.getPanoramaCamera().bearing)
                    .build();
        }
    });

@Override
public void onStreetViewPanoramaChange(StreetViewPanoramaLocation location) {
    location = mStreetViewPanorama.getLocation();
    if (location != null && location.links != null) {
        mStreetViewPanorama.setPosition(location.links[0].panoId);
    }
 }

}

Menu layout:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
  <item
      android:id="@+id/get_panorama"
      android:orderInCategory="100"
      android:title="@string/get_panorama"
      app:showAsAction="always">
  </item>
</menu>

Thank you!

JohnnyDevv
  • 269
  • 2
  • 17

1 Answers1

0

Null Pointer Exceptions Occur most likely if an object is used before it's being instialized

floreich
  • 157
  • 2
  • 16