我有一个嵌套片段,我想在设备方向更改时保持状态。
它是这样的:
我在嵌套片段中实例化了一个 mapView,当设备旋转时,用户必须在原来的位置。我怎样才能做到这一点?
谢谢
我有一个嵌套片段,我想在设备方向更改时保持状态。
它是这样的:
我在嵌套片段中实例化了一个 mapView,当设备旋转时,用户必须在原来的位置。我怎样才能做到这一点?
谢谢
好的,所以我犯了一个错误。我在片段父级上调用函数setRetainInstance(true),我不应该。
删除该行后,将地图状态保持在设备方向上非常简单。我所要做的就是在onSaveInstanceState上保存一些值,如下所示:
bundle.putDouble("lat", mMap.getCameraPosition().target.latitude);
bundle.putDouble("lon", mMap.getCameraPosition().target.longitude);
bundle.putFloat("zoom", mMap.getCameraPosition().zoom);
然后在 onCreate 上,我像这样恢复地图状态:
bundle.getDouble("lat");
bundle.getDouble("lon");
bundle.getDouble("zoom");
您可以像这样使用它,因为CameraPosition
类实现Parcelable
:
if (null != mMap) {
outState.putParcelable("map_camera_position", mMap.getCameraPosition());
}
onCreate()
if (null != savedInstanceState) {
mCameraPosition = savedInstanceState.getParcelable("map_camera_position");
}
if (null != mCameraPosition) {
mMap.moveCamera(CameraUpdateFactory.newCameraPosition(mCameraPosition));
}