Android 谷歌地图碎片问题
我正在转换我编写的一个应用程序,其中一部分是谷歌地图组件,我试图将其放入一个片段中,但我遇到了一些问题 我首先看了一眼,并对每个片段活动都会实现映射感到不高兴,但在遵循这些之后,我遇到了一些问题,正如现在的映射所显示的那样,但在旋转时,我会得到“在MapActivity错误中,您只允许有一个MapView”-在代码中注册MapView之后,在片段中,我得到的错误是,我只能在MapActivity中注册MapView 所以我现在已经实现了,我仍然会得到旋转的错误Android 谷歌地图碎片问题,android,google-maps,android-fragments,Android,Google Maps,Android Fragments,我正在转换我编写的一个应用程序,其中一部分是谷歌地图组件,我试图将其放入一个片段中,但我遇到了一些问题 我首先看了一眼,并对每个片段活动都会实现映射感到不高兴,但在遵循这些之后,我遇到了一些问题,正如现在的映射所显示的那样,但在旋转时,我会得到“在MapActivity错误中,您只允许有一个MapView”-在代码中注册MapView之后,在片段中,我得到的错误是,我只能在MapActivity中注册MapView 所以我现在已经实现了,我仍然会得到旋转的错误 我走到了死胡同,我有点沮丧——有人
我走到了死胡同,我有点沮丧——有人知道如何解决这个问题吗?我在
android-support-v4-googlemaps
库中遇到了同样的问题。仔细阅读片段的工作原理后,解决方案非常简单。基本上,框架保存了旋转时碎片的状态。因此,您需要做的是仅在没有保存状态时(即在活动的第一次运行时)实例化片段
下面是一个适用于我的示例代码:
public class MyMapFragmentActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map);
//... init views, do stuff ...
// Only instantiate fragments at first run
if (savedInstancestate == null) {
// Add map & list fragments
FragmentManager fm = getSupportFragmentManager();
MapFragment mapFragment = new MapFragment();
AnotherFragment another = new AnotherFragment();
FragmentTransaction ft = fm.beginTransaction();
ft.add(R.id.fragment_map, mapFragment, "fragment_map");
ft.add(R.id.fragment_another, anotherFragment, "fragment_another");
ft.commit();
}
//... do more stuff ...
}
}
在本例中,我甚至没有覆盖savedinstancestate()上的,
,因为我没有任何要保存的内容。请记住,此解决方案使用的是FragmentMapActivity hack
我希望这能有所帮助。谷歌发布了。这将为您提供一个MapFragment和一个。这应该可以解决您以前遇到的问题。对我很有效。无论如何,这确实是处理旋转的最佳方法。