4

I am trying to integrate google map in a fragment...App was running fine before but suddenly its crashing

I checked the below links...But none of these works for me Attempt to get length of null array in google maps V2 android app

Why google map v2 suddenly crashed by java.lang.NullPointerException: Attempt to get length of null array?

My codes are :

@Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        MapsInitializer.initialize(getActivity());



        View bottomSheet = fragmentLayout.findViewById(R.id.bottomSheet);

        fap = (FloatingActionButton) fragmentLayout.findViewById(R.id.fap);
        fap.setOnClickListener(this);
        bottomSheetTitle = (TextView) fragmentLayout.findViewById(R.id.bottomSheetTitle);
        bottomSheetAddress = (TextView) fragmentLayout.findViewById(R.id.bottomSheetAddress);

        bottomSheetBehavior = BottomSheetBehavior.from(bottomSheet);


        bottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
            @Override
            public void onStateChanged(@NonNull View bottomSheet, int newState) {
                if (newState == BottomSheetBehavior.STATE_HIDDEN) {
                    fap.setVisibility(View.GONE);
//                    text1.setText("Collapse Me!");
                } else {
                    fap.setVisibility(View.VISIBLE);
//                    text1.setText("Expand Me!");
                }
            }

            @Override
            public void onSlide(@NonNull View bottomSheet, float slideOffset) {

            }


        });
        bottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN);
//        getDetails(1);
//        bottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN);


        switch (GooglePlayServicesUtil.isGooglePlayServicesAvailable(getActivity())) {
            case ConnectionResult.SUCCESS:
                Toast.makeText(getActivity(), "SUCCESS", Toast.LENGTH_SHORT).show();
                mapView = (MapView) fragmentLayout.findViewById(R.id.map);
                if(mapView != null)
                    mapView.onCreate(savedInstanceState);
                // Gets to GoogleMap from the MapView and does initialization stuff
                if (mapView != null) {
                    Toast.makeText(getActivity(), "Getting map", Toast.LENGTH_SHORT).show();
                    mapView.getMapAsync(this);
                }
                break;
            case ConnectionResult.SERVICE_MISSING:
                Toast.makeText(getActivity(), "SERVICE MISSING", Toast.LENGTH_SHORT).show();
                break;
            case ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED:
                Toast.makeText(getActivity(), "UPDATE REQUIRED", Toast.LENGTH_SHORT).show();
                break;
            default:
//                Toast.makeText(getActivity(), GooglePlayServicesUtil.isGooglePlayServicesAvailable(getActivity()), Toast.LENGTH_SHORT).show();
                break;
        }

//        googleMap.setMyLocationEnabled(true);
    }

    @Override
    public void onMapReady(GoogleMap googleMap) {
//        Toast.makeText(getActivity(), "Map is ready to use", Toast.LENGTH_SHORT).show();
        this.map = googleMap;
        map.getUiSettings().setMyLocationButtonEnabled(false);
        if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getActivity(), 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.
            Toast.makeText(getActivity(), "Oops permission denied", Toast.LENGTH_SHORT).show();
            return;
        }
        map.setMyLocationEnabled(true);
        map.getUiSettings().setMyLocationButtonEnabled(true);
        mClusterManager = new ClusterManager<Location>(getActivity(), map);

        map.setOnCameraIdleListener(new GoogleMap.OnCameraIdleListener() {
            @Override
            public void onCameraIdle() {
//                Toast.makeText(getActivity(), "camera moved", Toast.LENGTH_SHORT).show();
                getLocationByRadius(map.getCameraPosition().target.latitude, map.getCameraPosition().target.longitude);
            }
        });

        map.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() {
            @Override
            public void onCameraChange(CameraPosition cameraPosition) {
                getLocationByRadius(map.getCameraPosition().target.latitude, map.getCameraPosition().target.longitude);
            }
        });

        map.setOnCameraIdleListener(mClusterManager);
        map.setOnMarkerClickListener(mClusterManager);

        mClusterManager.setOnClusterItemClickListener(new ClusterManager.OnClusterItemClickListener<Location>() {
            @Override
            public boolean onClusterItemClick(Location location) {
                getDetails(location.getLocationId());
                return false;
            }

        });


        checkPermission();


    }

xml layout:

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    tools:context="rollwithme.com.rollwithme.Fragments.ParkingFragment" app:layout_behavior="@string/appbar_scrolling_view_behavior">

    <com.google.android.gms.maps.MapView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/map" />

    <include layout="@layout/fragment_location_details" />

    <android.support.design.widget.FloatingActionButton
        android:src="@drawable/ic_expand_less_white_24dp"
        android:id="@+id/fap"
        app:fabSize="normal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_anchor="@id/bottomSheet"
        android:visibility="gone"
        app:backgroundTint="@color/colorPrimary"
        app:layout_anchorGravity="top|right|end"
        android:layout_marginRight="@dimen/cardViewPadding"/>

</android.support.design.widget.CoordinatorLayout>

I am testing on lg g3.....App runs fine in Huawei Y6 Pro.....used to work in g3 as well.....

the error msg i m getting is

FATAL EXCEPTION: main
                                                                         Process: rollwithme.com.rollwithme, PID: 4401
                                                                         java.lang.NullPointerException: Attempt to get length of null array
                                                                             at maps.G.a.a(Unknown Source)
                                                                             at maps.V.N.a(Unknown Source)
                                                                             at maps.D.e.a(Unknown Source)
                                                                             at maps.D.p.a(Unknown Source)
                                                                             at maps.ad.ae.a(Unknown Source)
                                                                             at maps.ad.t.a(Unknown Source)
                                                                             at maps.ad.R.a(Unknown Source)
                                                                             at uo.onTransact(:com.google.android.gms.DynamiteModulesB:66)
                                                                             at android.os.Binder.transact(Binder.java:380)
                                                                             at com.google.android.gms.maps.internal.IMapViewDelegate$zza$zza.onCreate(Unknown Source)
                                                                             at com.google.android.gms.maps.MapView$zza.onCreate(Unknown Source)
                                                                             at com.google.android.gms.dynamic.zza$3.zzb(Unknown Source)
                                                                             at com.google.android.gms.dynamic.zza$1.zza(Unknown Source)
                                                                             at com.google.android.gms.maps.MapView$zzb.zzbru(Unknown Source)
                                                                             at com.google.android.gms.maps.MapView$zzb.zza(Unknown Source)
                                                                             at com.google.android.gms.dynamic.zza.zza(Unknown Source)
                                                                             at com.google.android.gms.dynamic.zza.onCreate(Unknown Source)
                                                                             at com.google.android.gms.maps.MapView.onCreate(Unknown Source)
                                                                             at rollwithme.com.rollwithme.Fragments.ParkingFragment.onActivityCreated(ParkingFragment.java:163)
                                                                             at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:2089)
                                                                             at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1133)
                                                                             at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1290)
                                                                             at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:801)
                                                                             at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:1638)
                                                                             at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:679)
                                                                             at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:143)
                                                                             at android.support.v4.view.ViewPager.populate(ViewPager.java:1240)
                                                                             at android.support.v4.view.ViewPager.populate(ViewPager.java:1088)
                                                                             at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1614)
                                                                             at android.view.View.measure(View.java:17496)
                                                                             at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5464)
                                                                             at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1438)
                                                                             at android.widget.LinearLayout.measureVertical(LinearLayout.java:724)
                                                                             at android.widget.LinearLayout.onMeasure(LinearLayout.java:615)
                                                                             at android.view.View.measure(View.java:17496)
                                                                             at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5464)
                                                                             at android.support.design.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:700)
                                                                             at android.support.design.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:767)
                                                                             at android.view.View.measure(View.java:17496)
                                                                             at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5464)
                                                                             at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
                                                                             at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135)
                                                                             at android.view.View.measure(View.java:17496)
                                                                             at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5464)
                                                                             at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1438)
                                                                             at android.widget.LinearLayout.measureVertical(LinearLayout.java:724)
                                                                             at android.widget.LinearLayout.onMeasure(LinearLayout.java:615)
                                                                             at android.view.View.measure(View.java:17496)
                                                                             at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5464)
                                                                             at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
                                                                             at android.view.View.measure(View.java:17496)
                                                                             at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5464)
                                                                             at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1438)
                                                                             at android.widget.LinearLayout.measureVertical(LinearLayout.java:724)
                                                                             at android.widget.LinearLayout.onMeasure(LinearLayout.java:615)
                                                                             at android.view.View.measure(View.java:17496)
                                                                             at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5464)
                                                                             at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
                                                                             at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2636)
                                                                            at android.view.View.measure(View.java:17496
Community
  • 1
  • 1
coder
  • 159
  • 1
  • 14
  • I have this problem too. It must be because of the new Maps library – f.khantsis Sep 28 '16 at 18:49
  • Solution exists on related question [Why google map v2 suddenly crashed by java.lang.NullPointerException: Attempt to get length of null array?](http://stackoverflow.com/questions/39623625/why-google-map-v2-suddenly-crashed-by-java-lang-nullpointerexception-attempt-to) – Richard Le Mesurier Oct 03 '16 at 15:18
  • @RichardLeMesurier thanks for the url ... But i already checked those.. None of them worked for me... But i solved it moving to supportMapFragment – coder Oct 03 '16 at 17:12
  • You're probably not worrying about this issue anymore but, didi you try to call every `mapView.on~()` in every lifecycle method of your view? That's what worked for me. – Juan José Melero Gómez Mar 15 '18 at 11:10

1 Answers1

0

I couldnt solve it using mapview Later i switched to supportMapFragment....And it solved my problem...Thanks to google

For others i followed the following links...Thanks :)

https://developers.google.com/android/reference/com/google/android/gms/maps/SupportMapFragment

https://developers.google.com/maps/documentation/android-api/map

coder
  • 159
  • 1
  • 14