0

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クリック

さらにコードが必要ですか?

4

2 に答える 2

0

わかりました。答えは行を変更することです

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

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

onRetainInstance は、Activity ではなく Fragment インスタンスを保持します。で渡されたものへのアクティビティ参照を更新する必要があります

onAttach(Activity)
于 2013-07-25T10:54:20.483 に答える