0

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

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点击

您需要更多代码吗?

4

2 回答 2

0

onRetainInstance 保留 Fragment 实例而不是 Activity。您需要将您的 Activity 引用更新为传递给您的引用

onAttach(Activity)
于 2013-07-25T10:54:20.483 回答
0

好的,我明白了,答案是换行

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

fragmentTransaction.replace(R.id.map_container, mMapFragment);
于 2013-07-25T11:49:40.730 回答