我正在尝试保存用户通过菜单选择的地图类型,因此即使设备将被旋转或活动暂停一会儿,地图的类型也会保留。这就是我所做的,但它似乎不起作用。请你告诉我我做错了什么?
A AND B
我的主菜单有更多选择,但我在这里只添加了地图类型的相关选项:
private int mapTypeSelected;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null){
mapTypeSelected = GoogleMap.MAP_TYPE_NORMAL;
} else {
mapTypeSelected = savedInstanceState.getInt("the_map_type",GoogleMap.MAP_TYPE_NORMAL);
}
}
然后在我的活动结束时,我添加了这两个:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.change_map_type:
Toast.makeText(getApplicationContext(), "Change map type", Toast.LENGTH_LONG).show();
return true;
case R.id.map_type_normal:
mapTypeSelected = GoogleMap.MAP_TYPE_NORMAL;
mMap.setMapType(mapTypeSelected);
return true;
case R.id.map_type_satellite:
mapTypeSelected = GoogleMap.MAP_TYPE_SATELLITE;
mMap.setMapType(mapTypeSelected);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
我确信这是一个愚蠢的事情,我做错了,但我似乎无法看到什么。没有错误,一切正常,只是在旋转时,地图类型总是变为正常。 在此先感谢您的帮助!
答案 0 :(得分:0)
试试这个..
private int mMapType;
private boolean mRestoreMap;
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("the_map_type", mMap.getMapType());
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
mMapType = savedInstanceState.getInt("the_map_type", -1);
mRestoreMap = (mMapType != -1);
}
@Override
public void onMapReady(GoogleMap map) {
mMap = map;
if(mRestoreMap){
mMap.setMapType(mMapType);
}
}