Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 谷歌地图碎片问题_Android_Google Maps_Android Fragments - Fatal编程技术网

Android 谷歌地图碎片问题

Android 谷歌地图碎片问题,android,google-maps,android-fragments,Android,Google Maps,Android Fragments,我正在转换我编写的一个应用程序,其中一部分是谷歌地图组件,我试图将其放入一个片段中,但我遇到了一些问题 我首先看了一眼,并对每个片段活动都会实现映射感到不高兴,但在遵循这些之后,我遇到了一些问题,正如现在的映射所显示的那样,但在旋转时,我会得到“在MapActivity错误中,您只允许有一个MapView”-在代码中注册MapView之后,在片段中,我得到的错误是,我只能在MapActivity中注册MapView 所以我现在已经实现了,我仍然会得到旋转的错误 我走到了死胡同,我有点沮丧——有人

我正在转换我编写的一个应用程序,其中一部分是谷歌地图组件,我试图将其放入一个片段中,但我遇到了一些问题

我首先看了一眼,并对每个片段活动都会实现映射感到不高兴,但在遵循这些之后,我遇到了一些问题,正如现在的映射所显示的那样,但在旋转时,我会得到“在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和一个。这应该可以解决您以前遇到的问题。

对我很有效。无论如何,这确实是处理旋转的最佳方法。