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" />
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
You must initiase the google places library, below is the code:
Places.initialize(getApplicationContext(), getString(R.string.api_key));
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With