を含むViewPager
があります。その中の1つでは、私の入力に基づいていくつかのデータを取得するためにGoogle Places APIを呼びます。その後、次のFragment
に行くと、前のFragment
(別の入力を導入する)に戻る場合、データを取得できません。フラグメントでGoogleApiClientを処理する方法
以下のコード:私の問題は、私は戻って次のFragment
から回すと、すぐに別の入力を挿入していたときに、ある
@Override
public void onStart() {
super.onStart();
mGoogleApiClient.connect();
}
@Override
public void onStop() {
if(mGoogleApiClient.isConnected())
mGoogleApiClient.disconnect();
super.onStop();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View v = inflater.inflate(R.layout.my_fragment_layout, container, false);
mGoogleApiClient = new GoogleApiClient
.Builder(getActivity().getApplicationContext())
.addApi(Places.GEO_DATA_API)
.addApi(Places.PLACE_DETECTION_API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
/* init my components */
Places.GeoDataApi.getPlaceById(mGoogleApiClient, placeId)
.setResultCallback(new ResultCallback<PlaceBuffer>() {
@Override
public void onResult(@NonNull PlaceBuffer buffer) {
/* do my stuff */
}
});
return v;
}
mGoogleApiClientがコールバック結果を取得する前に切断するので、私ははonResultに到達することはできません。私はそれを動作させるために2回挿入する必要があります。
Fragment
のライフサイクルを通じてmGoogleApiClientオブジェクトの処理に問題があると思います。私のアプリケーションのデバッグFragment
のView
の再作成のためにメモリに2つの異なるオブジェクトmGoogleApiClientがあることがわかりました(muYで前進し、また前に戻ります)ViewPager
。
GoogleApiClient
インスタンスまたは接続自体を処理する方法はありますか?
ありがとうございます!
答えをいただきありがとうございます。私はupvotingをしていますが、アプローチについては正しいですが、私の質問は解決しません。 –