我正在开发一个Android应用程序,我对Android环境相当新。我正在使用谷歌地图,并放一个针。当用户选择引脚时,出现最初隐藏的按钮,可以按下该按钮删除地图上的引脚。但是,当屏幕旋转(并且引脚保持选中状态)时,删除按钮会消失。即使在屏幕旋转后,如何保持此按钮可见?注意:只有当用户在地图上选择了一个图钉时,才能看到该按钮。
以下是我用来设置标记点击监听器的代码:
map.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
public boolean onMarkerClick(final Marker marker) {
marker.showInfoWindow();
currentMarker = marker;
deleteButton = (ImageButton) findViewById(R.id.delete_button);
deleteButton.setVisibility(View.VISIBLE);
deleteButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
marker.remove();
deleteButton.setVisibility(View.GONE);
}
});
return true;
}
});
我也覆盖了onPause()
方法,所以我可以这样调用保存MapFragment的状态:
@Override
protected void onPause() {
super.onPause();
MapFragment mapFragment = (MapFragment) getFragmentManager()
.findFragmentById(R.id.map);
mapFragment.setRetainInstance(true);
}
所有这些代码都能正常工作,除非我旋转设备,即使标记保持选中状态,按钮也会消失。保持此按钮可见的最佳方法是什么?
答案 0 :(得分:0)
不显示的原因是因为在您旋转设备后正在重新创建Activity
;将重新创建整个View
层次结构。
此外,您在生命周期中调用mapFragment.setRetainInstance(true)
为时已晚。尝试拨打setRetainInstance()
Activity
中的onCreate()
。理想情况下,您可以在setRetainInstance()
内调用Fragment
。