已经在 Java 类中管理 ID 为 0 的 GoogleApiClient
Posted
技术标签:
【中文标题】已经在 Java 类中管理 ID 为 0 的 GoogleApiClient【英文标题】:Already managing a GoogleApiClient with id 0 inside a Java Class 【发布时间】:2018-09-18 04:10:18 【问题描述】:我在 java 类中创建了一个 GoogleMap,因此我可以多次重复使用它而无需重复代码。
我目前在同一个片段上有两张地图。一张地图,是供用户选择一个收集位置(物品拾取自)。第二张地图是交货地点(物品要去)。我的两个地图都可以工作,但是,当我尝试添加该行时,页面上的第二个地图崩溃了:
Fragment 内部,PostAJobFragment
// editTextSearch is an AutoCompleteTextView
map2.setEditSearchAPIListener(editTextSearch2, getActivity());
我创建了一个地图实例并访问了我的 Java 类中的 setEditSearchAPIListener 方法。如下:
Java 类内部,地图
public GoogleApiClient setEditSearchAPIListener(AutoCompleteTextView editTextSearch, FragmentActivity fragmentActivity)
mGoogleApiClient1 = new GoogleApiClient
.Builder(fragmentActivity)
.addApi(Places.GEO_DATA_API)
.addApi(Places.PLACE_DETECTION_API)
.enableAutoManage(fragmentActivity, this)
.build();
editTextSearch.setOnItemClickListener(mAutocompleteItemClickListener);
placeAutocompleteAdapter = new PlaceAutocompleteAdapter(fragmentActivity, mGoogleApiClient1, LAT_LNG_BOUNDS, null);
editTextSearch.setAdapter(placeAutocompleteAdapter);
return mGoogleApiClient1;
@Override
public void onPause()
super.onPause();
mGoogleApiClient1.stopAutoManage(getActivity());
mGoogleApiClient1.disconnect();
我收到一条错误消息,提示 'java.lang.IllegalStateException: Already managing a GoogleApiClient with id 0'
我查看了其他说使用 onPause 方法的答案。由于我的 Map 使用 Java 类而不是片段,因此它似乎不起作用。 有什么办法可以解决这个问题吗?
【问题讨论】:
【参考方案1】:我已经解决了我的问题。创建 GoogleApiClient 时,我尝试在 Java 类中创建一个名为 setGoogleApiClient 的方法。它会成功运行一次,但第二次会崩溃。
我将代码放在上一个片段的 onCreateView 方法中,它工作正常。
@Override
public View onCreateView(final LayoutInflater inflater, final ViewGroup container,
Bundle savedInstanceState)
final View view = inflater.inflate(R.layout.fragment_post_an_advert, container, false);
layoutView = view;
// Collection Map
map1 = new Map();
map2 = new Map();
getViewsByIds(view);
// Create google api client, so user has pre-set options to select.
/*
The main entry point for Google Play services integration
*/
mGoogleApiClient1 = new GoogleApiClient
.Builder(getActivity())
.addApi(Places.GEO_DATA_API)
.addApi(Places.PLACE_DETECTION_API)
.enableAutoManage(getActivity(), 0, this)
.build();
PlaceAutocompleteAdapter placeAutocompleteAdapter = new PlaceAutocompleteAdapter(getActivity(), mGoogleApiClient1, LAT_LNG_BOUNDS, null);
map1.setPlaceAutocompleteAdapter(placeAutocompleteAdapter);
map1.setmGoogleApiClient1(mGoogleApiClient1);
map2.setPlaceAutocompleteAdapter(placeAutocompleteAdapter);
map2.setmGoogleApiClient1(mGoogleApiClient1);
editTextSearch.setOnItemClickListener(map1.mAutocompleteItemClickListener);
editTextSearch2.setOnItemClickListener(map2.mAutocompleteItemClickListener);
editTextSearch.setAdapter(placeAutocompleteAdapter);
editTextSearch2.setAdapter(placeAutocompleteAdapter);
【讨论】:
以上是关于已经在 Java 类中管理 ID 为 0 的 GoogleApiClient的主要内容,如果未能解决你的问题,请参考以下文章
ava. lang. NullPointerException com. ajax. connection. ConnectionUtil findProvinces(ConnectionUtil j
ava. lang. NullPointerException com. ajax. connection. ConnectionUtil findProvinces(ConnectionUtil j