屏幕旋转后对侦听器中的Activity的错误引用

时间:2013-07-25 10:16:49

标签: android google-maps-android-api-2

我对Google Maps Api有疑问。旋转屏幕后,我有一个错误/旧的活动参考。 我“正在使用”mMapFragment.setRetainInstance(true);“。”pact“是活动。日志记录为我提供了活动的密码,但它们不相同(看起来示例)。

private void setUpMapIfNeeded() {

        if (map != null) {
            Log.d(H.TAG, "setUpMapifNeeded" );

            Log.d(H.TAG, pact.toString() + " set new onclicklistener");
            map.setOnInfoWindowClickListener(new OnInfoWindowClickListener(){

                @Override
                public void onInfoWindowClick(Marker marker) {

                    Log.d(H.TAG, pact.toString() + " click");
                }
            });
        }

}

登录示例

旋转前

  • MainApp @ 422fa1c0 MainApp创建
  • MainApp @ 422fa1c0设置新的onclicklistener
  • MainApp @ 422fa1c0点击
旋转后

  • MainApp @ 42b291f0 MainApp创建
  • MainApp @ 42b291f0设置新的onclicklistener
  • MainApp @ 422fa1c0 点击

您需要更多代码吗?

2 个答案:

答案 0 :(得分:0)

onRetainInstance保留Fragment实例而不是Activity。 您需要将活动参考更新为

中传递给您的参考
onAttach(Activity)

答案 1 :(得分:0)

好的,我明白了,答案是改变行

fragmentTransaction.add(R.id.map_container, mMapFragment);

fragmentTransaction.replace(R.id.map_container, mMapFragment);