最近在写地图,开始用的百度,因为一直有问题,所以发了个提问
http://topic.csdn.net/u/20120729/22/24df850b-c2d2-4b7b-b39f-b0d591d26dcd.html?seed=263996862&r=79263713#r_79263713
结果还是没有人解决我的问题,因为来回切换几次地图就白板了,这个是百度地图本身的一个bug,也在网上找过办法,
本帖最后由 尘封|☆ 于 2012-4-26 16:02 编辑 无论是谷歌地图还是百度地图,都需要继承MapActivity, 由于我目前做的是一个平板项目,该项目显示的永远只有一个MainActivity, 不同的显示都是用removeView和AddView来切换,如果需要显示地图的view,那么我用下面的代码来处理:
- LocalActivityManager localActivityManager = ((ActivityGroup)mContext).getLocalActivityManager();
- Intent i = new Intent(mContext, BaiduMapActivity.class);
- Window w = localActivityManager.startActivity("tag", i);
- View currentView=w.getDecorView();
- currentView.setVisibility(View.VISIBLE);
- currentView.setFocusableInTouchMode(true);
- ((ViewGroup) currentView).setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS); ((LinearLayout) MainActivity.getContentView()).addView(currentView);
复制代码
现在的问题是,当第一次点击百度地图的按钮,调用这段代码,显示没问题,但是第二次点击的时候,就什么都不显示了。 注意:我用谷歌地图这样处理,是不会出现这个问题的。 我研究后,将代码改成下面这样:
- menuList.add(new MenuBean(null, res.getString(R.string.m_manage_baidu_map), R.drawable.uer_info, new PerformListener() {
- int t=10;
- public void performAction() {
- t++;
- LocalActivityManager localActivityManager = ((ActivityGroup)mContext).getLocalActivityManager();
- Intent i = new Intent(mContext, BaiduMapActivity.class);
- Window w = localActivityManager.startActivity("tag"+t, i);
- View currentView=w.getDecorView();
- currentView.setVisibility(View.VISIBLE);
- currentView.setFocusableInTouchMode(true);
- ((ViewGroup) currentView).setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS);
- ((LinearLayout) MainActivity.getContentView()).addView(currentView);
- }
- }));
复制代码
重复点击,显示就没问题了。 但我比较郁闷,这样处理的话,Window w = localActivityManager.startActivity("tag"+t, i); 这个tag参数岂不没有缓存的意义了,这样每次都会create一个新的activity,这个不是很好吧。 大家帮忙看看,百度地图为什么会出现这个问题呢,有没有什么解决方法呢?? 拜谢!!! |
http://www.eoeandroid.com/forum.php?mod=viewthread&tid=169359&highlight=
试了一下不行,还是改成了google地图
后来又同学发现此问题产生的原因是我在onstop 里面把bmapmanager销毁了,所以再次点击的时候会白板 ,销毁这个百度manager最好在程序退出的时候进行