我想知道如何保存GoogleMap的状态
我有一个使用GoogleMap的片段,当我旋转屏幕时,此地图会重新加载。 例如,如果您打开Google地图应用,请加载地图,当您旋转屏幕时,地图不会重新加载。但是在我的地图中重新加载(像素化为无像素化)。
我知道保存Camera
状态的方法并恢复它,但这不是问题。
怎么办?
答案 0 :(得分:0)
由于您使用的是片段,除了在XML中设置“orientation | screensize”设置外,您可以在java代码中尝试其他几个选项。
然后使用FragmentManager将片段添加到活动中。在运行时配置更改期间,当活动再次启动时,您可以从片段中获取数据对象。
另一种选择是将方向固定为横向或纵向,这将固定屏幕。
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Checks the orientation of the screen
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
}
}
有关详细信息,请参阅此link。
希望这会有所帮助!!
答案 1 :(得分:-1)
当您旋转屏幕时,您的视图正在尝试重新加载其数据。您可以检查地图是否为空,然后设置地图。像这样的东西:
private void setupMapIfNeeded() {
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
if (mMap == null) {
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
}