我有一個ViewPager
其中包含各種Fragments
。在其中的一箇中,我打電話給Google Places Api根據我的輸入檢索一些數據。稍後,當我轉到下一個Fragment
時,如果我想返回到之前的Fragment
(以引入另一個輸入),我無法檢索數據。下面如何處理片段上的GoogleApiClient
代碼:
@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;
}
我的問題是,當我打開從下Fragment
回,並立即插入另一個輸入,我不能因爲mGoogleApiClient獲得回調結果之前斷開達到onResult。我必須插入兩次才能使其工作。
我猜我在通過Fragment
的生命週期處理我的mGoogleApiClient對象時遇到問題。調試我的應用程序我發現在內存中有兩個不同的對象mGoogleApiClient,這是因爲Fragment
的View
的重新創建(前進和後退再次以muy ViewPager
)。
有沒有辦法處理GoogleApiClient
實例或連接本身?
在此先感謝!
感謝您的答案,我upvoting,因爲你是正確的方法,但它不能解決我的問題。 –