Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

java.lang.IllegalStateException: Places must be initialized

I was using the old Place SDK which was working fine But it is going to be depreciated and I move to new place SDK. I got keep the crashing report from a few devices.

Crashes Report:

Fatal Exception: java.lang.RuntimeException
Unable to start activity ComponentInfo{com.islamuna.ramadan/com.google.android.libraries.places.widget.AutocompleteActivity}: java.lang.IllegalStateException: Places must be initialized.

SDK version:

    implementation 'com.google.android.libraries.places:places:1.1.0'

Even i initialize Place sample code:

Places.initialize(getApplicationContext(), "mykey", Locale.US);

autocompleteFragment = (AutocompleteSupportFragment)
                    getSupportFragmentManager().findFragmentById(R.id.place_autocomplete_fragment);
            autocompleteFragment.setPlaceFields(Arrays.asList(Place.Field.ID, Place.Field.NAME,Place.Field.LAT_LNG));
            autocompleteFragment.setText(Global.getStoredStringValue(getApplicationContext(), getString(R.string.KEY_CITY)));

            autocompleteFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() {
                @Override
                public void onPlaceSelected(Place place) {
                    try {

                        }
                    } catch (Exception e) {
                    }

                }

                @Override
                public void onError(Status status) {
                    // TODO: Handle the error.

                }
            });

Layout XML

<fragment
                    android:id="@+id/place_autocomplete_fragment"
                    android:name="com.google.android.libraries.places.widget.AutocompleteSupportFragment"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:background="@drawable/border_filled" />
like image 703
Madani ILjija Avatar asked May 07 '19 10:05

Madani ILjija


2 Answers

I was also facing the same issue but I resolved with this code.

 dependencies {
      implementation 'com.google.android.libraries.places:places:2.0.0'
    }

First Step: Initialize the Places SDK In OnCreate Method or you can initialize it on your Application Class

if (!Places.isInitialized()) {
        Places.initialize(getApplicationContext(), getString(R.string.api_key), Locale.US);
    }

Second Step:

 var fields=Arrays.asList(Place.Field.ID,Place.Field.NAME,Place.Field.LAT_LNG)
    var intent = Autocomplete.IntentBuilder(AutocompleteActivityMode.FULLSCREEN, fields).build(this)
     startActivityForResult(intent, PLACE_PICKER_REQUEST)

And in Activity Result

   override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
        super.onActivityResult(requestCode, resultCode, data)
        if (requestCode == PLACE_PICKER_REQUEST) {
            if (resultCode == Activity.RESULT_OK) {
                val place =Autocomplete.getPlaceFromIntent(data);

                lat = place.latLng?.latitude
                lng = place.latLng?.longitude
            }
            else if (resultCode == AutocompleteActivity.RESULT_ERROR) {
                // TODO: Handle the error.
                var status = Autocomplete.getStatusFromIntent(data)
                Log.i("address", status.getStatusMessage());
            }
        }
}

This is the Kotlin Example but you can convert in JAVA Also, you can refer to this URL for Examples. Google Places SDK Example

like image 200
Rahul Goswami Avatar answered Sep 20 '22 08:09

Rahul Goswami


You must initiase the google places library, below is the code:

Places.initialize(getApplicationContext(), getString(R.string.api_key));

like image 31
Shyam Avatar answered Sep 22 '22 08:09

Shyam