我有一个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,因为你是正确的方法,但它不能解决我的问题。 –