gpt4 book ai didi

android - 如何处理 fragment 上的 GoogleApiClient

转载 作者:行者123 更新时间:2023-11-29 01:14:22 26 4
gpt4 key购买 nike

我有一个 ViewPager,其中包含各种 Fragments。在其中一个中,我调用 Google Places Api 以根据我的输入检索一些数据。稍后,当我转到下一个 Fragment 时,如果我想返回到上一个 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;
}

我的问题是,当我从下一个 Fragment 返回并立即插入另一个输入时,我无法到达 onResult,因为 mGoogleApiClient 在获得回调结果之前断开连接。我必须插入两次才能使其正常工作。

我猜我在通过 Fragment 的生命周期处理我的 mGoogleApiClient 对象时遇到了问题。调试我的应用程序我发现内存中有两个不同的对象 mGoogleApiClient 由于 FragmentView 的重新创建(在 muy 中前进和后退) ViewPager).

有没有办法处理 GoogleApiClient 实例或连接本身?

提前致谢!

最佳答案

问题是,您误解了 Fragment 的用途 - 它只是 UI(还有 Activity)。不要把业务逻辑,比如取数据放在里面。创建单独的“模型”类,它将存储在应用程序(可能是 Activity )中并绑定(bind)到该应用程序( Activity )的生命周期。通过一些接口(interface) Activity 实现提供这些数据

关于android - 如何处理 fragment 上的 GoogleApiClient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40739861/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com