我正在转换我编写的应用程序,其中一部分是GoogleMap组件,我试图将其放入片段中,但我遇到了问题。
我首先看一下android-support-v4-googlemaps并且不满意每个FragmentActivity都会实现地图,但是跟着这些instructions on how to make a MapFragmentActivity我遇到了问题,因为现在地图会显示但是旋转我d得到“你只允许在MapActivity错误中有一个MapView” - 在代码中注册MapView的this answer后,在片段中,我得到的错误是我只能在MapActivity中注册MapView 。
所以我现在已经实现了android-support-v4-googlemaps,我仍然在轮换时遇到错误。
我走到了尽头,我有点沮丧 - 有谁知道如何解决这个问题?
答案 0 :(得分:1)
我对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 ...
}
}
在这种情况下,我甚至没有覆盖onSavedInstanceState()
,因为我没有任何可以保存的东西。请记住,此解决方案 使用FragmentMapActivity library hack。
我希望这会有所帮助。
答案 1 :(得分:1)