ImageButton在屏幕方向更改时消失

时间:2015-01-04 05:36:44

标签: android google-maps android-activity android-fragments android-button

我正在开发一个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);
}

所有这些代码都能正常工作,除非我旋转设备,即使标记保持选中状态,按钮也会消失。保持此按钮可见的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

不显示的原因是因为在您旋转设备后正在重新创建Activity;将重新创建整个View层次结构。

此外,您在生命周期中调用mapFragment.setRetainInstance(true)为时已晚。尝试拨打setRetainInstance() Activity中的onCreate()。理想情况下,您可以在setRetainInstance()内调用Fragment

相关问题