我已经创建了一个地图片段,如MapView in a Fragment (Honeycomb)所示,效果很好。
问题是我在以下活动中有另一个地图片段。
活动A有一个占用整个页面的MapFragment。 Activity B的MapFragment只占用了一半的页面(下半部分有一个ListFragment)。两者都工作正常,但是当我单击后退按钮从活动B返回到A时,地图视图只占用了一半页面而页面的下半部分有刷新问题。
mapviews状态也不会独立于另一个保存。例如:从Activty A到Activity B时,地图显示相同的内容。这可以。但是,如果用户在活动B中平移或缩放地图。当用户返回活动A时,地图不会返回到该活动暂停时的位置(这显然不是一个主要问题,因为我可以手动保存状态和重新定位。如果它是为我处理的话会很方便。
这是活动A从活动B返回后的样子
答案 0 :(得分:1)
你曾告诉过你是否有更好的解决方案 - 现在就有了。 Google发布了Android Maps API v2,为您提供了MapFragment
。现在它应该像魅力一样。
答案 1 :(得分:0)
我找到了解决方案,但如果你能找到更好的解决方案,请告诉我。
问题是当活动A被恢复时,它的碎片并不意味着它们永远不会被重绘并保持它在活动B中的大小。
要解决此问题,我必须将以下方法添加到MapFragment并从活动onResume()调用它。这样可以确保调整地图大小以占用最初的空间。 是的,这是一个大规模的黑客攻击,所以如果你找到一种方法来确保正确可靠地创建,销毁和恢复碎片,请在这里发表答案。
/**
* This method should be called in the activity containing the fragments onResume method
* to ensure the mapview in this fragment has the expected size.
*
* @param width
* @param height
*/
public void setMapViewSize(int width, int height){
LayoutParams lp = new LayoutParams(width, height);
myMapView.setLayoutParams(lp);
}
只是为了澄清,当我说MapFragment时,我说的是扩展MapActivity的类而不是加载包含地图的活动的类(扩展了ActivityHostFragment)。