私は自分のアプリでジオフェンシングを使用しています。ジオフェンスを追加しようとすると、次のエラーが発生します。私はクライアントにandroid geofencing java.lang.IllegalStateException:GoogleApiClientがまだ接続されていません
/* Create a new google api client */
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
を定義して、私のONSTART方法で、私はそれが
/* Connect to the API client */
super.onStart();
if (mGoogleApiClient != null) {
mGoogleApiClient.connect();
}
nullではないが、それでも、それはそのエラーを与えることを確実にすること、それに接続するAppCompatActivityのonCreateメソッドで
IllegalStateException: GoogleApiClient is not connected yet
。
マイAppCompatActivityは
@Override
public void onMapReady(GoogleMap googleMap) {}
onMapReady方法がIが定義されている
LocationServices.GeofencingApi.addGeofences(
mGoogleApiClient,
getGeofencingRequest(),
getGeofencePendingIntent()
).setResultCallback(MapsActivity.this);
このコード行を含む私がオーバーライドされたメソッドを持っている
とりわけOnMapReadyCallbackとResultCallbackインタフェースを実装getGeofencingRequest getGeofencingPendingIntentプライベートメソッドをオーバーライドし、ResultCallbackのonResultメソッドをオーバーライドします。
私はこのエラーで数時間と数時間を費やしており、前進するようには見えません。 AppCompatActivityが開始されるまで、Appは正常に実行されます。 onCreateは正常に発生し、onStartも正常に発生します。
私はこのエラーの二つの可能性があると思う:それはonMapReadyに利用可能になる前
onMapReady方法は、(そう)ONSTART前に呼び出されている
がonStopメソッドは、クライアントを切断方法
エラーに若干の解決が認められます。フル要旨へ
リンクは以下の通りです: https://gist.github.com/serceberka/0935e185e663a3be13eb13f4b9e0d5ac
を。なぜなら、それをonStart()に置くことはあまり良い考えではないからです。 –
@mihir rajそうではありません。実際には、Google APIクライアントが接続される前にジオファンスを作成しようとしていました。 onMapReadyは、onConnectedメソッドが呼び出される前にgoogle apiクライアントをリクエストしていました。そこで、onMapReadyメソッドのすべてのジオフェンスコードをonConnectedメソッドに移動し、うまくいきました。 – 4blun3kin