Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.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-don';t在旋转时刷新谷歌地图v2_Android_Screen Rotation - Fatal编程技术网

Android-don';t在旋转时刷新谷歌地图v2

Android-don';t在旋转时刷新谷歌地图v2,android,screen-rotation,Android,Screen Rotation,当我旋转设备时,Google Maps v2会刷新。如何防止发生此刷新?我正在SherlockFragment的选项卡中动态添加地图。您不能,地图正在刷新,因为活动在配置更改(屏幕旋转…)时正在重新创建。您可以使用以下方法防止活动的旋转: android:screenOrientation="landscape" 或 在地图活动下的清单文件中 这样可以防止在旋转时重新创建它。Emil的评论正确地解释了重置地图视图的原因。然而,禁止通过清单改变方向不是好的风格 您需要以某种方式保留映射片段,或者

当我旋转设备时,Google Maps v2会刷新。如何防止发生此刷新?我正在SherlockFragment的选项卡中动态添加地图。

您不能,地图正在刷新,因为
活动在配置更改(屏幕旋转…)时正在重新创建。您可以使用以下方法防止
活动的旋转:

android:screenOrientation="landscape"

在地图
活动
下的
清单
文件中


这样可以防止在旋转时重新创建它。

Emil的评论正确地解释了重置地图视图的原因。然而,禁止通过清单改变方向不是好的风格

您需要以某种方式保留映射片段,或者保留包含映射片段的片段。重新创建“主机”活动后,需要将片段重新附加到活动,而不是创建新的片段。 我这里没有任何代码,但您可以找到有关在web上保留片段的信息


作为替代方案,您可以将地图状态(我想最重要的是相机位置)保存到其他地方,并在片段重新创建后将其恢复

我通过向AndroidManifest.xml中的活动添加以下内容修复了该问题:

android:configChanges=“orientation | screenSize”

编辑(2017年4月28日):

从:

注意:应避免使用此属性,并仅作为最后手段使用。有关如何正确处理由于配置更改而重新启动的更多信息,请阅读处理运行时更改


也许你可以看看,使用
片段活动
onCreate
方法中的
Bundle
可以正确保存
SupportMapFragment
,很遗憾,谷歌处理地图刷新问题的方式就是你所看到的

android:configChanges="orientation|uiMode|screenSize|fontScale"  
android:screenOrientation="user" 

在Google maps应用程序清单中的活动标记上。

maps by Google没有此问题。他们是否用开发人员无法访问的代码来绕过它?谷歌地图应用程序不会随着设备配置的改变而改变。他们做的正是我在回答中所描述的。@Ascorbin,我想你可以添加更多吗?当我将此代码添加到活动中时,应用程序被迫进入该方向。谷歌地图不强制定向。当我改变设备的方向时,谷歌地图不会显示“灰盒”模式。在填充地图之前,我的应用程序显示了这种“灰盒”模式。如果符合应用程序的需要,禁止通过清单更改方向没有什么坏处。当然,但在这种情况下,它似乎是一种懒惰的解决方法,可以更优雅的方式轻松地解决问题。如果地图上有带信息窗口的标记怎么办?它们将横向显示。此外,操作栏将是横向的。谷歌之所以不禁止在地图应用程序中更改方向,是有原因的。是的,他们会的。但有时您不想在景观中显示地图,因为它不适合此应用程序的需要。我需要两个方向。我认为这取决于用户决定哪个方向更适合他查看地图。
android:configChanges="orientation|uiMode|screenSize|fontScale"  
android:screenOrientation="user"