【问题标题】:ImageButton disappears on screen orientation changeImageButton 在屏幕方向更改时消失
【发布时间】:2015-01-04 05:36:43
【问题描述】:

我正在开发一个 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() 方法,因此我可以调用 save MapFragment 的状态,如下所示:

@Override
protected void onPause() {
    super.onPause();
    MapFragment mapFragment = (MapFragment) getFragmentManager()
            .findFragmentById(R.id.map);
    mapFragment.setRetainInstance(true);
}

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多