gpt4 book ai didi

android - 从 Google Map 的 setOnInfoWindowClickListener 接口(interface)方法替换 fragment 时 UI 挂起

转载 作者:太空宇宙 更新时间:2023-11-03 12:54:37 24 4
gpt4 key购买 nike

我在我的应用程序中使用谷歌地图并显示标记。

现在点击标记窗口我想用其他 fragment 替换当前 fragment 。

for (StoreData store : comp.getArrStoreList()) {
LatLng l = new LatLng(Double.parseDouble(store.getLat()),
Double.parseDouble(store.getLng()));

MarkerOptions marker = new MarkerOptions()
.position(l)
.title(store.getName())
.snippet(store.getCity())
.icon(BitmapDescriptorFactory
.defaultMarker(BitmapDescriptorFactory.HUE_AZURE));

Marker mrkr = mapCompanyList.addMarker(marker);

CompanyStoreData companyStoreData = new CompanyStoreData();

companyStoreData.setStoreData(store);

companyStoreData.setCompanyId(comp.getId());

listStoreData.put(mrkr, companyStoreData);


mapCompanyList
.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {

@Override
public void onInfoWindowClick(Marker marker) {

try {

StoreDetailsFragment storeDetails = new StoreDetailsFragment();
Bundle b = new Bundle();

b.putSerializable(UserDefaults.STORE_OBJECT,
listStoreData.get(marker).getStoreData());
b.putString("StoreAppID", listStoreData.get(marker).getCompanyId());

storeDetails.setArguments(b);

((BaseTabbarContainer) companyListFragment.getParentFragment()).replaceFragment(
storeDetails, true); // here my UI is hang

} catch (Exception e) {
Log.e("Exception", "Exception :: " + e.getMessage());
}

}
});
}

我正在创建一个具有 <marker,storedata> 的 hashmap标记作为键,存储数据(我的自定义类对象)作为值。

在 onInfoWindowClick 上,我正在获取基于 hashmap() 键的存储数据实例。它运作良好,但

((BaseTabbarContainer) companyListFragment.getParentFragment()).replaceFragment(
storeDetails, true);

这里我的 UI 挂起。什么问题

最佳答案

我解决了这个问题。如果有人遇到这个问题,请引用这个。

我所做的是创建一个处理程序以在延迟一段时间后运行代码 fragment ,并在调用处理程序后从 onInfoWindowClick 方法返回

mapCompanyList
.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {

@Override
public void onInfoWindowClick(Marker marker) {

final Marker mark = marker;
try {

new Handler().postDelayed(new Runnable() {

@Override
public void run() {
callStore(mark);
}
}, 100);


return;
} catch (Exception e) {
Log.e("Exception", "Exception :: " + e.getMessage());
}

}
});

调用存储

    private void callStore(Marker marker) {
StoreDetailsFragment storeDetails = new StoreDetailsFragment();
Bundle b = new Bundle();

b.putSerializable(UserDefaults.STORE_OBJECT,
listStoreData.get(marker).getStoreData());
b.putString("StoreAppID", listStoreData.get(marker).getCompanyId());

storeDetails.setArguments(b);

((BaseTabbarContainer) CompanyListFragment.this.getParentFragment()).replaceFragment(
storeDetails, true);

}

成功了;

但我仍然不明白为什么它会挂起,以及为什么在后延迟运行代码时从 onInfoWindowClick 方法返回后问题得到解决?如果有人有任何想法,请分享。

关于android - 从 Google Map 的 setOnInfoWindowClickListener 接口(interface)方法替换 fragment 时 UI 挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22985984/

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