Ich benutze Google Places API, und ich muss Ort Details mit Ort ID abrufen. Ich versuche, Methode getPlaceById()
aufzurufen, aber es schlägt immer fehl. Hier ist das Protokoll:getPlaceByID() schlägt immer mit java.lang.IllegalArgumentException fehl: Puffer ist geschlossen
java.lang.IllegalArgumentException: Buffer is closed.
at com.google.android.gms.common.data.DataHolder.zzg(Unknown Source)
at com.google.android.gms.common.data.DataHolder.zzi(Unknown Source)
at com.google.android.gms.common.data.zzc.zzcB(Unknown Source)
at com.google.android.gms.location.places.internal.zzt.zzG(Unknown Source)
at com.google.android.gms.location.places.internal.zzb.getPlaceId(Unknown Source)
at .onPredictionSelected(CreateLocationActivity.java:181)
at .AutocompletePredictionsHelper.onItemClick(AutocompletePredictionsHelper.java:51)
at android.widget.AutoCompleteTextView.performCompletion(AutoCompleteTextView.java:905)
at android.widget.AutoCompleteTextView.access$400(AutoCompleteTextView.java:90)
at android.widget.AutoCompleteTextView$DropDownItemClickListener.onItemClick(AutoCompleteTextView.java:1195)
at android.widget.AdapterView.performItemClick(AdapterView.java:300)
at android.widget.AbsListView.performItemClick(AbsListView.java:1247)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:3215)
at android.widget.AbsListView$3.run(AbsListView.java:4009)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:155)
at android.app.ActivityThread.main(ActivityThread.java:5696)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1028)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)
Mein Code:
public void onPredictionSelected(AutocompletePrediction prediction) {
if (!googleApiClient.isConnected()) return;
PendingResult<PlaceBuffer> result =
Places.GeoDataApi.getPlaceById(googleApiClient, prediction.getPlaceId());
result.setResultCallback(places -> {
if (places.getCount() > 0)
place = places.get(0);
places.release();
});
}
Es ist ziemlich merkwürdig, weil Google Places API korrekt angeschlossen ist. Was könnte der Grund für diese Ausnahme sein?
Dank für Ihre Antwort. Sieht so aus, als ob 'AutocompletePredictionBuffer.release() 'vor meiner' onPredictionSelected()' Methode aufgerufen wurde. Deshalb wurde Puffer geschlossen =) – hornet2319